利用头插法实现链表的反转
方法简介:
一:创建一个新的空链表,如下图所示:

二:从原链表中摘除头部节点 1,并以头部插入的方式将该节点添加到新链表中

三:从原链表中摘除头部节点 2,以头部插入的方式将该节点添加到新链表中

四:继续重复以上工作,先后将节点 3、4 从原链表中摘除,并以头部插入的方式添加到新链表中

经过以上四个步骤,该链表已经反转完成
代码实现:
package com.linkedlist;
import java.util.Arrays;
/*链表节点类*/
class Linked{
int data;
Linked next;
public Linked(int data) {
this.data = data;
}
@Override
public String toString() {
return "Linked [data=" + data + ", next=" + next + "]";
}
}
//链表类
public class Linkedlist {
public static void main(String[] args) {
/*构造一个简单的链表*/
Linked head=new Linked(0);
Linked a=new Linked(1);
Linked b=new Linked(2);
Linked c=new Linked(3);
Linked d=new Linked(4);
head.next=a;
a.next=b;
b.next=c;
c.next=d;
//使用方法实现链表的反转
head=ReverseLinkedlist(head);
//输出链表
System.out.println(head);
}
public static Linked ReverseLinkedlist(Linked head) {
//创建三个辅助节点进行链表的反转
Linked temp=null; //用于储存新加入的节点
Linked newhead=null; //新的链表的头节点
Linked cur=head; //用cur代替头节点
int length=0;
//得到这个链表的个数
while(head!=null) {
length++;
head=head.next;
}
//使用头插法进行链表反转
for(int i=1;i<=length;i++) { //一个length长度的链表需要反转length次
temp=cur;
cur=cur.next;
temp.next=newhead;
newhead=temp;
}
return newhead;
}
}
本文介绍了如何利用头插法实现链表的反转,通过创建新链表并逐步将原链表节点以头部插入的方式加入新链表,从而达到翻转效果。详细步骤包括创建空新链表,然后依次摘除原链表头部节点并插入新链表。
2310

被折叠的 条评论
为什么被折叠?



