头插法和本地逆置在程序里实现起来是一样的,区别在思维方式上。引用小象学院林沐老师的课件:
修正了之前我写的Java程序:
package test;
class Node
{
int data;
Node nextNode;
}
public class testFour {
public static Node reverse(Node head)
{
if(null == head || null == head.nextNode)
{
return head;
}
Node tempHead = new Node(); //新链的头节点
while(head.nextNode != null)
{
Node next = head.nextNode;
head.nextNode = tempHead.nextNode;
tempHead.nextNode = head;
head = next;
}
return tempHead.nextNode;
}
public static void main(String[] args) {
Node node = new Node();
node.data = 1;
Node nextnode = new Node();
nextnode.data = 2;
Node node3 = new Node();
node3.data = 3;
Node node4 = new Node();
node4.data = 4;
Node node5 = new Node();
node5.data = 5;
node.nextNode = nextnode;
nextnode.nextNode = node3;
node3.nextNode = node4;
node4.nextNode = node5;
node5.nextNode = null;
Node newHead = new Node();
newHead = reverse(node);
while(newHead.nextNode != null)
{
System.out.println(newHead.data);
newHead = newHead.nextNode;
}
System.out.println(newHead.data);
}
}