zoukankan      html  css  js  c++  java
  • 从尾到头打印链表

      如题所示,之前觉着这个就是一个简单的将链表转到栈,然后从栈顶开始输出。于是准备全部手写链表、栈结构。可是实现的过程之中发现还是感受到了原来一些没有体会到的思想。

      遇到的问题一:链表结构之前想的是在链表外部每次传进来node节点,每次链表对这些节点操作,而自身内部不生成新的节点。

      遇到的问题二:如果按照问题一的做法,链表的第一个节点放入栈中后,按照规则说,此时栈中的顶部节点不指向任何节点,也就是它的next=null,可是这样后会造成链表断裂,而不改它的next,则在最后的链表输出的时候,造成死循环,两个节点一直指向对方不会结束。

      因此,无论是链表结构还是栈结构,在形成的时候,内部新生成节点,不依赖传入的节点。

      在解决这些基本结构后,主程序也就很简单了。

      

     1 import java.util.*;
     2 public class PrintListReversingly {
     3     public static void PrintListReversingly(Node head){
     4         Node node=new Node();
     5         node=head;
     6         if(node==null){
     7             System.out.println("the list is null");
     8         }
     9         else{
    10             Stack stack=new Stack();
    11             Node top=new Node();
    12             while(node!=null){
    13                 top=stack.push(node);
    14                 node=node.next;
    15             }
    16             stack.printStack(top);
    17             System.out.println(stack.getTop());
    18         }
    19 
    20     }
    21     public static void main(String[] a){
    22         Scanner read=new Scanner(System.in);
    23         String c;
    24         c=read.nextLine();
    25         Node node=new Node(c);
    26         LinkList link=new LinkList(node);
    27         while(!node.data.equals("#")){
    28             link.add(node);
    29             c=read.nextLine();
    30             node=new Node(c);
    31         }
    32         PrintListReversingly(link.getHead());
    33     }
    34 }
    jeyfang
  • 相关阅读:
    TCP之Nagle算法与TCP_NODELAY
    CSPS模拟 87
    CSPS模拟 86
    CSPS模拟 85
    CSPS模拟 84
    CSPS模拟 83
    CSPS模拟 82
    CSPS模拟 81
    CSPS模拟 80
    CSPS模拟 79
  • 原文地址:https://www.cnblogs.com/jeyfang/p/5446906.html
Copyright © 2011-2022 走看看