ArrayList の連鎖

9
11
8
21
22
7
6
5
4
3
2
1
0
C# で ArrayList を連鎖するプログラムです。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. ArrayList 自体が List 構造をしているのですが、これを連鎖して二重の連鎖構造を構築します。
    最初のステップとして、ArrayList を単純に連鎖してみましょう。
    ArrayList の基礎は ArrayList の基礎 を参照して下さい。
    ArrayList に Class の登録は Object Class を登録 を参照して下さい。
    //★ ArrayList の連鎖    前田 稔 ★
    using System;
    using System.Collections;   //ArrayList を使うとき
    class Cell
    {   public ArrayList pt = new ArrayList();
        public int v;
    }
    
    class Prog
    {
        public static void Main()
        {   Cell top = null;
            Cell wk,wp;
            int i;
    
            for(i=0; i<10; i++)
            {   wk = new Cell();
                wk.v = i;
                wk.pt.Add(top);
                top = wk;
            }
    
            for(wk=top; wk!=null; wk=(Cell)wk.pt[0])
                Console.WriteLine(wk.v);
            Console.ReadLine();
        }
     }
    
  2. class Cell が連鎖する構造体(Class)で、pt で Cell を連鎖します。
    pt 自体が ArrayList で List 構造を持っています。
    メンバーとして int 型の値を格納する v を定義しています。
    class Cell
    {   public ArrayList pt = new ArrayList();
        public int v;
    }
    
  3. top が連鎖する構造体のトップポインターです。
    wk, wp は作業用で、ArrayList の連鎖に使用します。
    10個の Cell を連載して、0~9の値を格納します。
        public static void Main()
        {   Cell top = null;
            Cell wk;
            int i;
    
            for(i=0; i<10; i++)
            {   wk = new Cell();
                wk.v = i;
                wk.pt.Add(top);
                top = wk;
            }
    
  4. 連鎖をたどりながら Cell に格納された値(v)を印字します。
            for(wk=top; wk!=null; wk=(Cell)wk.pt[0])
                Console.WriteLine(wk.v);
            Console.ReadLine();
    

ArrayList に追加

  1. Cell のメンバーの pt は ArrayList で List 構造を持っています。
    class Cell
    {   public ArrayList pt = new ArrayList();
        public int v;
    }
    
    そこで top が指す pt に 11 を追加してみましょう。
            wk = new Cell();
            wk.v = 11;
            top.pt.Add(wk);
    
  2. 次に top が指す pt[0] が指す pt に 21 と 22 を追加してみましょう。
            wk = new Cell();
            wk.v = 21;
            wp = (Cell)top.pt[0];
            wp.pt.Add(wk);
            wk = new Cell();
            wk.v = 22;
            wp.pt.Add(wk);
    
  3. 印字も ArrayList に Cell が追加されているときは、その Cell に格納されている v の値も印字します。
    ページ先頭のリストが追加した結果です。
            for (wk=top; wk!=null; wk=(Cell)wk.pt[0])
            {   Console.WriteLine(wk.v);
                for(i=1; i<wk.pt.Count; i++)
                {   wp = (Cell)wk.pt[i];
                    Console.WriteLine(wp.v);
                }
            }
            Console.ReadLine();
    

超初心者のプログラム入門(C# Frame Work)