welcome: please sign in
location: "線形リスト"の差分
32と33のリビジョン間の差分
2010-11-23 12:35:35時点のリビジョン32
サイズ: 1277
編集者: masahiko
コメント:
2010-11-23 12:44:01時点のリビジョン33
サイズ: 1885
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 33: 行 33:
これは以前に作成したものです。
 {{{#!java
void showAll()
{
 Chain c;

 c = this;
 System.out.println("(");
 while (c != null)
 {
  c.show();
  c = c.next;
 }
 System.out.println(")");
}
 }}}
これをもとにして、次の2つのメソッドを作成します。
行 35: 行 52:
 {{{#!java
int length()
{
 Chain c;
 int cnt;

 c = this;
 cnt = 0;
 while (c != null)
 {
  cnt++;
  c = c.next;
 }
 return cnt;
}
 }}}
行 37: 行 71:
 {{{#!java
Chain nth(int n)
{
 Chain c;
 int cnt;

 c = this;
 cnt = 0;
 while (c != null && cnt < n)
 {
  c = c.next;
 }
 return c;
}
 }}}

線形リスト

同じ形式のデータが一列に並んでおり、 前から順にたどりながら参照できる形のものを線形リストといいます。

これも線形リストの1種です。

  • chain42.png

線形リストの特徴

  1. 前から順にすべてのデータをたどることができます。
  2. データの追加や削除が配列と比べて楽に行えます。


線形リストの修正

次のような処理を考えましょう。

  • リストの先頭に追加
  • リストの途中に追加
  • リストの最後に追加
  • リストの先頭を削除
  • リストの途中を削除
  • リストの最後を削除

つぎのことが分かっています。

追加する場合

  • 追加したい位置の直前にあるオブジェクトを参照できれば簡単に行える。

削除する場合

  • 取り除きたい位置の直前にあるオブジェクトを参照できれば簡単に行える。


つながっているものすべてを表示するメソッド

これは以前に作成したものです。

  •    1 void showAll()
       2 {
       3         Chain c;
       4 
       5         c = this;
       6         System.out.println("(");
       7         while (c != null)
       8         {
       9                 c.show();
      10                 c = c.next;
      11         }
      12         System.out.println(")");
      13 }
    

これをもとにして、次の2つのメソッドを作成します。


つながっている個数を返すメソッド

  •    1 int length()
       2 {
       3         Chain c;
       4         int cnt;
       5 
       6         c = this;
       7         cnt = 0;
       8         while (c != null)
       9         {
      10                 cnt++;
      11                 c = c.next;
      12         }
      13         return cnt;
      14 }
    


指定された位置にあるオブジェクトを返すメソッド

  •    1 Chain nth(int n)
       2 {
       3         Chain c;
       4         int cnt;
       5 
       6         c = this;
       7         cnt = 0;
       8         while (c != null && cnt < n)
       9         {
      10                 c = c.next;
      11         }
      12         return c;
      13 }
    


線形リスト (最終更新日時 2010-11-29 13:13:10 更新者 masahiko)