List(連鎖)の基礎

C:\DATA\Java2\>java ListTest
three
two
one
 -- Press any key to exit (Input "c" to continue) --

構造体(Class)を使った List(連鎖)の基礎です。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして ListTest.java の名前で保存して下さい。
    //★ 構造体を List で連鎖   前田 稔
    public class ListTest
    {
        // List 構造体
        static class   List
        {   String  msg;    //Message
            List    next;   //List のリンク
    
            // Constructor
            public List(String str, List p)
            {   msg= str;
                next= p;
            }
        }
    
        public static void main(String args[])
        {   List    p1 = new List("one",null);
            List    p2 = new List("two",p1);
            List    p3 = new List("three",p2);
            List    pt;
            for(pt=p3; pt!=null; pt=pt.next)    System.out.println(pt.msg);
        }
    }
    
  2. ソースプログラムをコンパイルして class オブジェクトを実行して下さい。
    ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. Java にはC言語で言う所の構造体はありません。
    構造体と Class は基本的に同じなので構造体を使いたいときは Class を使います。
    Java には ArrayList と言う便利な機能があるのですが、今回は構造体を使って連鎖するプログラムを作成します。
  2. セルを連鎖した List 構造の概念図です。
    次のセル データ1
        ↓
    次のセル データ2
        ↓
        ・・・
    次のセル データn-1
        ↓
    null データn
  3. msg が構造体に格納するメッセージで、next が構造体の連鎖です。
        static class   List
        {   String  msg;    //Message
            List    next;   //List のリンク
        
  4. Constructor で構造体に値を格納します。
    str がメッセージの値で、p が連鎖する List 構造体です。
            public List(String str, List p)
            {   msg= str;
                next= p;
            }
        
  5. 手始めに3個のセルに "one","two","three" の値を格納して連鎖してみました。
    3番目のセルの next には2番目のセルが、2番目のセルの next には1番目のセルが連鎖されていることに注目して下さい。
    1番目のセルの next には List の終端を示す null が格納されています。
        public static void main(String args[])
        {   List    p1 = new List("one",null);
            List    p2 = new List("two",p1);
            List    p3 = new List("three",p2);
        
  6. p3 ⇒ p2 ⇒ p1 と、リンクをたどって印字してみました。
    pt=pt.next で次のセルをポイントします。
            List    pt;
            for(pt=p3; pt!=null; pt=pt.next)    System.out.println(pt.msg);
        
  7. Tree 構造のプログラムは「C/C++/CLI」や「C# Frame Work」でも作成しています。
    前田稔の超初心者のプログラム入門 から 「C/C++/CLI/構造体/List 連鎖の基礎」や「Binary Tree Sort new」または
    「C# Frame Work/Binary Tree の基礎」や「Binary Tree ソート」を参照して下さい。

超初心者のプログラム入門(Java2)