効率的な一方向チェーンテーブルの逆シーケンス出力を実現するにはどうすればいいですか?(詳細)


要因を考慮し、効率的に多方面の要因を比較する必要がある.
  • データ量が大きいかどうか
  • 空間に制限があるかどうか
  • 元のチェーンテーブルの構造を
  • に変更できますか?
  • 時間複雑度に制限があるかどうか
  • チェーンテーブルノードが出力する必要がある要素は複数あります.たとえば、チェーンテーブルに保存されているのはカスタムオブジェクトで、複数のフィールドタイトルがあります.
  • 01.まず簡単なJava版の単項チェーンテーブルを実現して任意の長さの任意の数値のチェーンテーブルを構築することを学び、頭挿法、順次出力チェーンテーブル
  • を遍歴する.
    package com.szs.list;
    /**
     *    
     * @author Administrator
     *
     */
    public class MyLinkedList {
        public int data;
        public MyLinkedList next;
    
        public MyLinkedList(int data) {
            this.data=data;
            this.next=null;
        }
        public MyLinkedList() {
            this.data=-1;
            this.next=null;
        }
    }

    02.上記の単一チェーンテーブルの逆シーケンス出力効率の高い出力チェーンテーブルを作成し、スタックを直接使用して記憶する~~
    package com.szs.list;
    
    import java.util.Random;
    import java.util.Stack;
    
    public class InverseSingleList {
    
        public static void main(String[] args) {
            MyLinkedList head=  new MyLinkedList();
            createList(head);
            inverseList(head);
        }
        /**
         *               ,    
         */
        public static void createList(MyLinkedList head) {
            Random random = new Random(System.currentTimeMillis());
            int len = random.nextInt(10);
            for(int i=0;i stack = new Stack<>();
            System.out.println("  ");
            while(head2!=null) {
                stack.push(head2.data);
                head2=head2.next;
            }
            while(!stack.isEmpty()) {
                System.out.print(stack.pop()+"\t");
            }
    
        }
    }

    03.テストを行う
      
    25  69  10  28  23  89  32  2   23  length=9
      
    23  2   32  89  23  28  10  69  25  
    -------
      
    28  35  83  99  88  length=5
      
    88  99  83  35  28