首页 > 其他 > 详细

学习数据结构的第五天(二)

时间:2020-03-31 21:21:17      阅读:84      评论:0      收藏:0      [点我收藏+]

 

反转链表需要多学习一下,怎么去反转链表之类的。

关于计数法,现在统一一下,能够发现一些东西:

技术分享图片

 

(1) 首先,现在规定就是从0开始,小于size,那么计数得到的结果就是到达size位置,也就是说达到了1到size的功效。

但是计数就是从0开始计数。

(2)任何插入操作,也是遵循从0开始计数,以及插入一个位置,相当于把原来的位置给占据(占据的思想也想一下,就是要到达该位置)

(3)链表的插入,需要到达    指定位置的前一个位置。     前一个位置的思想要有。

(4)因此,按照0到index位置,本来是能够达到index位置的。(根据第一点)

(5)但是,因为在dummyhead开始去计数的,那么会到达index位置的前一个位置。

所以说,根据0到index加上dummyhead 就会到达链表的前一个位置。

 

技术分享图片

 

 所以说这个get为什么要从dummyhead的next开始呢?因为的话是要到达相应的位置,而不是说到达这个位置的前一个,所以说需要从next开始

 

public class LinkedList<E> {

private class Node{
public E e;
public Node next;

这里说的是结点、内部类,结点作为内部类的话,那么外面已经有泛型了,那么里面不用再写泛型了。

这个学会了结点是怎么写的。

public Node(E e, Node next){
this.e = e;
this.next = next;
}

public Node(E e){
this(e, null);
}

public Node(){
this(null, null);
}

这里说的是:三个构造函数的相互调用,直接用this来相互调用。

 

if(index<0 && index>=size)
throw new IllegalArgumentException();

对于set的话,那么是大于等于size就是错误,原因:set是从0开始数的,而且是到达了size 那么就是错的超出范围

而对于add的话,大于size才是错,因为等于size的话,是在size的前一个停止。所以说相当于在最后添加一个节点,这是正确的。

 

无论是基本类型,还是引用类型,都可以用.equals来作为,所以以后判断相等就用.equals 吧。

 

链表:方便添加、方便删除,不太方便查找。

而数组,方便查找,不方便添加和删除。

 

而用linkedlist去实现queue,用linkedlist去实现stack目前还没弄,先放着吧。

 

对于节点,包含节点的,有树,有链表,对于节点来说,要写一个tostring方法来打印。

对于外面的这个链表或者这个数,也写tostring方法,但是调用节点的tostring方法

也就是对于大的结构和小的节点,都需要写tostring方法。

 

至于dummyhead的目的,自己目前认为是必定加dummyhead的,为了插入等操作的时候,不用区分是不是head插入之类的区别。

 

学习数据结构的第五天(二)

原文:https://www.cnblogs.com/startFrom0/p/12605670.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!