关闭

Java学习之单链表创建以及正向遍历和反向遍历方法

标签: java单链表遍历链表指针
132人阅读 评论(0) 收藏 举报
分类:

链表是一种存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。原先是在C语言的学习中有遇到过,Java中的链表第一次遇到是在一家公司的面试题中。链表的种类有单链表、双端链表、有序链表,以下就单链表做一个简单的讨论。

1、创建数据节点

public class Node {
       publicint value;//节点标号
       publicNode next;//用于指向下一个节点的指针
      
       publicint getValue() {
              returnvalue;
       }
       publicvoid setValue(int value) {
              this.value= value;
       }
       publicNode getNext() {
              returnnext;
       }
       publicvoid setNext(Node next) {
              this.next= next;
       }
}


2、创建单链表以及遍历方法,正向遍历网上较多,所以以下提出了两种反向遍历方法 

public class NodeTest {
       Nodehead = null;
       Nodepoint = null;
       NodenewNode = null;
       Nodenod = null;
       publicstatic int CountNum = 0;
       publicstatic void main(String[] args){
     
              NodeTestnodeTest = new NodeTest();
              //添加节点数据
              //Stack<Node>stk = new Stack<Node>();
              for(intj = 0; j < 100; j++){
                     nodeTest.AddNode(j);
              }
             
              //显示节点数据
//          for(intn = 0;n < 100; n++){
//                 if(n== 0){
//                        nodeTest.nod= (Node)nodeTest.head;
//                        System.out.println(nodeTest.nod.value);
//                 }
//                 else{
//                        nodeTest.nod= (Node)nodeTest.nod.next;
//                        System.out.println(nodeTest.nod.value);
//                 }    
//          }
             
              //查找数据
//          Scannersim = new Scanner(System.in);
//          System.out.println("输入你所需要查找的node(0~99):");
//          intinput =  sim.nextInt();

              //正向遍历查找数据
//          for(intn = 0;n < 100; n++){
//                 if(n== 0){
//                        nodeTest.nod= (Node)nodeTest.head;
//                        if(input== nodeTest.nod.value){
//                               System.out.println(nodeTest.nod.value);
//                        }
//                 }
//                 else{
//                        nodeTest.nod= (Node)nodeTest.nod.next;
//                        if(input== nodeTest.nod.value){
//                               System.out.println(nodeTest.nod.value);
//                        }
//                 }    
//          }    
             
              //反向遍历方法一,栈
//          System.out.println("反向遍历:");
//          //nodeTest.printStack(stk);
//          Enumeration<Node>items = stk.elements();//得到栈中枚举
//          while(items.hasMoreElements()){
//                 Nodenode = (Node)items.nextElement();
//                 if(node.value== input){
//                        System.out.println(node.value+ ";;");
//                 }
//          }    
              search(nodeTest.head);
       }
             
      //反向遍历方法二,递归
       publicstatic  void search(Node nodeTest){
              if(nodeTest.next!=null) {
                     search(nodeTest.next);
                     System.out.println(nodeTest.value);
              }else{
                     return;
              }
       }
       //添加节点Stack<Node>stk
       publicvoid AddNode(int i){
              newNode= new Node();
              if(head== null){
                     head= newNode;
              }else{
                     if(CountNum== 1){
                            point= head;                  
                     }
                     point.next= newNode;
              }
              point= newNode;
              point.value= i;
              point.next= null;
              CountNum++;
             
              //stk.push(point);
       }
      
       publicvoid printStack(Stack<Node> stack){
              if(stack.empty()){
                     System.out.println("栈是空的");
              }else{
                     System.out.println("栈中的元素:");
                     Enumeration<Node>items = stack.elements();//得到栈中枚举
                     while(items.hasMoreElements()){
                            Nodenode = (Node)items.nextElement();
                            System.out.println(node.value+ ";;");
                           
                     }
              }
       }
}
 


不足之处望指正。



1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11478次
    • 积分:167
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类