Java实现反转单链表

方法:从第2个节点到第n个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。

代码:
public class Node {
    private int key;
    private Node next;
    public Node(int key) { 
    // TODO Auto-generated constructor stub 
    this.key = key; 
   


    public Node getNext() { 
    return next; 
   


    public void setNext(Node next) { 
    this.next = next; 
   


    public int getKey() { 
    return key; 
   


    public void setKey(int key) { 
    this.key = key; 
   


    public static Node ReverseList(Node head) {
    Node p,q;   int n=1; 
       p=head.next;   
       while(p.next!=null)      //在这个循环过程中p所指的元素一直是不变的  
       {  
           q=p.next;   
           p.next=q.next;   
           q.next=head.next;   
           head.next=q;   
       }   
       p.next=head;            //相当于成环   
       head=p.next.next;       //新head变为原head的next   
       p.next.next=null;     //断掉环   
           
       while(head!=null)      
       {  
         System.out.println("倒数第"+n+"个数为"+head.key);
         head=head.next;
         n++;
       }
    return head; 
    }
   


    public static void main(String[] args) { 
     
    
      Node head=new Node(0);
      Node node1=new Node(1);
      Node node2=new Node(2);
      Node node3=new Node(3);
      Node node4=new Node(4);
      head.setNext(node1);
      head.setNext(node1);
      node1.setNext(node2);
      node2.setNext(node3);
      node3.setNext(node4);
      node4.setNext(null);
    ReverseList(head);
   
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值