单向链表的逆置

最近在学习链表,上课时老师出了一道单向链表的逆置,我的思路如下:
1.从键盘输入将要输入的数据个数,作为数组的长度。
2.构造数组,将数据存在数组里。
3.构造新链表,将数组里的元素按顺序以尾插法存在链表里。
4.构造一个新的头结点headS,将步骤3中链表的结点(从头结点后的结点开始)按顺序一个一个删除,接到headS后面,用头插法。

import java.util.Scanner;

//结点类
class LNode{
int data;
LNode next;

//链表类
class MyList{
LNode head;
LNode tail;
LNode headS;

//创建链表
void createList(int[] a){
head=new LNode();
tail=head;
LNode ptr;
int i=0;
ptr=head.next;//将头结点的指向ptr
while (i<a.length){
ptr=new LNode();//给ptr分配空间
tail.next=ptr;//将尾结点的指向ptr
ptr.data=a[i];
//tail=ptr;
ptr.next=null;//ptr指向空
tail=ptr;
i++;
}
}

void nixu(){
LNode ptr;
LNode newNode;
ptr=head.next;
headS=new LNode();
while (ptr!=null){
newNode=ptr;将ptr赋给新节点n ewNode
head.next=ptr.next;//删除ptr
ptr=head.next;
newNode.next=headS.next;//将新节点插入到headS之后
headS.next=newNode;

}
}

void printList(){
LNode ptr=headS.next;
while (ptr!=null){
System.out.print(" "+ptr.data);
ptr=ptr.next;
}
}
}

public class Nizhi {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入数据的个数:");
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
int[] a=new int[n];
int i=0;
System.out.println("请输入数据:");
while (i<n){
a[i]=reader.nextInt();
i++;
}
MyList mylist=new MyList();
mylist.createList(a);
//mylist.printList();
mylist.nixu();
System.out.println("输出逆转后的结果:");
mylist.printList();
}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值