反转链表

问题描述

输入一个链表,反转链表后,输出链表的头结点

思路分析

当我们遍历一次后,也就是遍历到尾节点时,其实也就完成了反转,在此过程中需要三个指针,一个指向当前遍历的前驱,由于反转,另一个是当前指针,还有一个是当前遍历的下一个指针,通过不断改变他们之间的关系来更改前后继关系

码上有戏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public LinkNodes reserve(LinkNodes head){
LinkNodes reserveHead=null;
LinkNodes curNode=head;
LinkNodes pre=null;
while(curNode!=null)
{
LinkNodes nextNode=curNode.next;
if(nextNode==null)
reserveHead=curNode;
curNode.next=pre;
pre=curNode;
curNode=nextNode;
}
return reserveHead;
}

测试:

public static void main(String[] args) {
RefindNum rf=new RefindNum();
LinkNodes node1=new LinkNodes(1);
LinkNodes node2=new LinkNodes(2);
LinkNodes node3=new LinkNodes(3);
LinkNodes node4=new LinkNodes(4);
node1.next=node2;
node2.next=node3;
node3.next=node4;
node4.next=null;
LinkNodes phead=rf.reserve(node1);
while(phead!=null){
System.out.println(phead.data);
phead=phead.next;
}

热评文章