单链表的就地逆置算法

package one;


public class Node {
int data;
Node next;
public Node(int data){
this.data = data;
}


}


package one;


import java.util.Scanner;


public class TestNode {
public static void main(String[] args) {
Node head = creat();
display(head);
head = invert(head);
display(head);
}
static Node creat(){
Scanner scanner = new Scanner(System.in);
int i= 1;
System.out.println("输入第"+i+"个参数");
int d = scanner.nextInt();
Node head;
head = new Node(d);
Node t=null,s=null;
s = head;
while(true){
i++;
System.out.println("输入第"+i+"个参数");
d = scanner.nextInt();
if(d==0)break;
if(d != 0){
t = new Node(d);
s.next = t;
s = t;
}


}
return head;
}
static void display(Node head){
System.out.println("链表:");
if(head == null){
System.out.println("null");

}System.out.println(head.data+"");
while(head.next !=null){
head = head.next;
System.out.println(head.data+"");
}
}
static Node invert(Node head){
Node t = null,s=null,v = null;
if(head == null || head.next == null){
System.out.println("逆置的单链表至少有2个结点");
return null;
}else{
t = head;
s = t.next;

while(s != null){
v = s.next;
s.next = t;
t=s;
s=v;

}
head.next = null;
head = t;
return head;
}


}


}


运行结果

输入第1个参数
1
输入第2个参数
2
输入第3个参数
3
输入第4个参数
4
输入第5个参数
0
链表:
1
2
3
4
链表:
4
3
2
1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值