单链表:只有value和next指针
双链表:有value和两个指针(last和next两个指针,last指向上一个节点地址,next指向下一个节点地址。第一个节点无last指针,最后一个节点无next指针)
单链表反转
最后一个节点的next指向是一个为null的空间,所以next记得是null的地址,而不是next为空
对于单链表的反转,我们可以通过三个指针来很好的说明一般的 迭代反转方法来 进行反转。这三个指针分别是 pre,mid,next指针,mid指针更像一个中间临时变量,让pre和next通过mid不断往后移动。
步骤:
mid=head 指向第一个元素;pre=null指向 null元素,为了后面将第一个元素的next指向pre的null;next将指向mid.next元素。
单链表实现队列
V:是我们真实存的数据
Node
注:我这边有个想法,是不是栈中数据都是可达的,但是堆中数据必须要通过栈中数据可达以后才不会被GC垃圾机制收除,如果不可达会被GC在内存中删除掉
用双链表结构实现双端队列
单链表:如果要用单链表来实现双端队列,我们来看一下会有什么效果。
用双链表来实现双端队列,在实现首尾插入节点和首尾弹出节点实现的关键
插入
首:首插入先要考虑新节点cur 的指向问题。第一、然head节点的last指向cur,即head.last = cur; 第二、就是cur节点的next指针指向head,即cur.next = head;第三、将head移动到新节点cur上,即head = cur。
注:这里的两点就是head的last指针和cur的next指针指向,还有就是head指针移动问题。
尾:
K个节点的组内逆序调整
