Java 链表的反转(图解)
首先定义一个链表,采用头插:
我们要将他反转过来,已知一个头结点,之后我们需要在定义两个结点,为什么是两个不是一个呢,原因如下:
初始状态:
我们知道,链表要反转的话,第二个几点就会指向第一个结点
故我们需要多两个结点来操作
这样当我们操作第2个结点指向第一个结点的时候,就不会发生错误了。
代码:
public static void main(String[] args) { int arr[]={1,2,34,5,8,65}; Node link=new Node(); for(int i:arr){ Node x=new Node(); x.value=i; x.next=link; link=x; } System.out.println(link.toString()); if(link==null||link.next==null){ link=link; //不变 }else { Node link1 = null; Node link2 = null; while (link != null) { link2 = link.next; link.next = link1; link1 = link; link = link2; } link=link1; } System.out.println(link.toString()); }
结果:
下一篇:
算法笔记——数据结构(并查集)