链表逆序
程序员文章站
2024-03-06 00:01:25
...
- 已知一个链表,将该链表进行逆序
- 整体思路:始终持有新链表第一个元素的索引,老链表的第一个元素始终头插到新链表,依次遍历老链表
class LinkedNode{
int value;
LinkedNode next;
public LinkedNode(int value){
this.value=value;
}
}
public class ReverseLinkedList {
public static void main(String[] args){
LinkedNode node1=new LinkedNode(1);
LinkedNode node2=new LinkedNode(3);
LinkedNode node4=new LinkedNode(5);
node1.next=node2;
node2.next=node4;
printLinkedNode(node1);
LinkedNode reverseNode=reverseLinkedNode(node1);
printLinkedNode(reverseNode);
}
private static void printLinkedNode(LinkedNode node){
while (node!=null) {
System.out.print(node.value+",");
node=node.next;
}
System.out.println();
}
public static LinkedNode reverseLinkedNode(LinkedNode node){
LinkedNode newHead=null;
while (node!=null) {
LinkedNode currentNext=node.next;//把后一个节点记录下来
node.next=newHead;//将当前节点指向新链的头部,作为新链的头部
newHead=node;//更新新链的头部引用
node=currentNext;//更新老链的头部引用
}
return newHead;
}
}