• java实现链表逆置


    结点结构:

    1 public class Node {
    2     //Node结点的结构为值域:value 指针域:next,指向下一个元素
    3      Node next;
    4      Object value;}

    初始化各变量:

    Node pre=null;//指向当前节点的前一结点。第一个结点的前一结点为null;
    Node cur=list;//指向当前结点。初始化时指向第一个结点
    Node next=list;//用于缓存当前结点的下一结点

    更改各节点next值:

    while(cur!=null){
      next=cur.next;
      cur.next=pre;
      pre=cur;
      cur=next;            
    }

    程序代码:

     1 package algorithm;
     2 
     3 public class Node {
     4     //Node结点的结构为值域:value 指针域:next,指向下一个元素
     5      Node next;
     6      Object value;
     7      
     8     //结点构造函数1。只存结点值。
     9     public Node(Object value){
    10         this.value=value;
    11         this.next=null;
    12     }
    13     //结点构造函数2。指定结点值和指向的下一个值
    14     public Node(Node next,Object value){
    15         this.value=value;
    16         this.next=next;
    17     }
    18     //链表逆置
    19     public static Node reverseList(Node list){
    20         
    21         Node pre=null;//指向当前节点的前一结点。第一个结点的前一结点为null;
    22         Node cur=list;//指向当前结点。初始化时指向第一个结点
    23         Node next=list;//用于缓存当前结点的下一结点
    24         
    25         while(cur!=null){
    26             next=cur.next;
    27             cur.next=pre;
    28             pre=cur;
    29             cur=next;            
    30         }
    31         return pre;
    32     }
    33     
    34     //打印链表
    35     public static void printList(Node List){
    36         Node node=List;
    37         while (node!=null){
    38             System.out.println(node.value);
    39             node=node.next;
    40         }
    41     }
    42     
    43     public static void main(String[] args) {
    44         // TODO Auto-generated method stub
    45         //创建4个结点
    46         Node a1=new Node("Node1");
    47         Node a2=new Node("Node2");
    48         Node a3=new Node("Node3");
    49         Node a4=new Node("Node4");
    50         
    51         //创建链表List a1->a2->a3->a4
    52         a1.next=a2;
    53         a2.next=a3;
    54         a3.next=a4;
    55         a4.next=null;
    56         Node List=a1;
    57         System.out.println("original list:");
    58         Node.printList(List);
    59         List=Node.reverseList(List);
    60         System.out.println("list reversed:");
    61         Node.printList(List);
    62         
    63     }
    64 }
  • 相关阅读:
    取石子(二)
    Nim游戏 之HDU 1850 Being a Good Boy in Spring Festival
    移动字母
    asterisk meetme 会议实现
    asterisk基础学习一
    Asterisk 1.8 sip 协议栈分析
    asterisk dialplan详解
    asterisk chan_sip.c代码分析
    asteirsk 开发指南
    asterisk 基础学习二
  • 原文地址:https://www.cnblogs.com/newRedFlower/p/3379639.html
Copyright © 2020-2023  润新知