java 单链表反转详解

来源:互联网 发布:工业设备数据采集 编辑:程序博客网 时间:2024/06/08 00:26

java 实现单链表反转:

class node{    int data;    node next;    public node(int data){        this.data=data;        this.next=null;    }}public class lianbiao {    public static void main(String[] args) {        // TODO Auto-generated method stub        int []arr= {2,5,3,4,1,0};         node p,fore,pnext;        node head=new node(arr[0]); //head 为第一个节点           p=head;        //构建链表        for(int i=1;i<arr.length;i++){             p.next=new node(arr[i]);             p=p.next;        }       //输出链表        p=head;       while(p!=null){           System.out.print(p.data+" ");           p=p.next;       }      //链表反转时,需要用到上一个节点fore 和下一个节点pnext。      //当前节点p 重新指向p的上一个节点之前,需要先记录下p的下一个节点。因为p.next改变后,      //你已经无法通过p.next获得下一个节点。       p=head;         fore=null;       while(p.next!=null){     //开始反转           pnext=p.next;//记录下一个节点           p.next=fore; //p.next反转 指向前一个节点           fore=p;      //更新 fore             p=pnext;     //更新p       }       p.next=fore;       System.out.println(" ");       //输出反转链表      while(p!=null){          System.out.print(p.data+" ");           p=p.next;       }    }}

结果显示:

2 5 3 4 1 0  0 1 4 3 5 2 
原创粉丝点击