758
コメント:
|
2414
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
## page was renamed from リスト処理 | #acl All: |
行 3: | 行 3: |
線形リストは同じ形式のデータが一列に並んだものです。<<BR>> データの追加や削除が配列と比べて楽に行えます。<<BR>> Javaで記述してみましょう。 |
同じ形式のデータが一列に並んでおり、 前から順にたどりながら参照できる形のものを'''線形リスト'''といいます。 |
行 7: | 行 6: |
このようなインスタンスを使います。 . {{attachment:list1.png}} . 1つ目の変数には値を保存します . 2つ目の変数には次の項目へのリンクを記入します。 3つのインスタンスをつないだ例を示します。 . {{attachment:list2.png}} . これより先につながっていないことを、'''null'''という値で表します。 . {{attachment:list3.png}} . {{attachment:list4.png}} . {{attachment:list5.png}} |
これも'''線形リスト'''の1種です。 . {{attachment:chain42.png}} 線形リストの特徴 1. 前から順にすべてのデータをたどることができます。 1. データの追加や削除が配列と比べて楽に行えます。 ---- === 線形リストの修正 === 次のような処理を考えましょう。 * リストの先頭に追加 * リストの途中に追加 * リストの最後に追加 * リストの先頭を削除 * リストの途中を削除 * リストの最後を削除 つぎのことが分かっています。 追加する場合 追加したい位置の直前にあるオブジェクトを参照できれば簡単に行える。 削除する場合 取り除きたい位置の直前にあるオブジェクトを参照できれば簡単に行える。 ---- === つながっているものすべてを表示するメソッド === これは以前に作成したものです。 {{{#!java void showAll() { Chain c; c = this; System.out.println("("); while (c != null) { c.show(); c = c.next; } System.out.println(")"); } }}} これをもとにして、次の2つのメソッドを作成します。 ---- === つながっている個数を返すメソッド === つながっている個数を返すメソッドlengthを作ります。 返す値はintです。次の修正が必要。 * メソッドの型宣言 * return 処理内容 showAllではオブジェクト1つずつに対してshowを行っていたので、 ここでカウントを行えばよい。 変数の宣言と初期化を加え、不要な部分を除けば完成。 {{{#!java int length() { Chain c = this; int cnt = 0; while (c != null) { cnt++; c = c.next; } return cnt; } }}} ---- === 指定された位置にあるオブジェクトを返すメソッド === {{{#!java Chain nth(int n) { Chain c = this; int cnt = 0; while (c != null && cnt < n) { cnt++; c = c.next; } return c; } }}} . {{attachment:chain41.png}} ---- === メソッド内でメソッドを使う === {{{#!java void showContent() { next.showAll(); } }}} |
線形リスト
同じ形式のデータが一列に並んでおり、 前から順にたどりながら参照できる形のものを線形リストといいます。
これも線形リストの1種です。
線形リストの特徴
- 前から順にすべてのデータをたどることができます。
- データの追加や削除が配列と比べて楽に行えます。
線形リストの修正
次のような処理を考えましょう。
- リストの先頭に追加
- リストの途中に追加
- リストの最後に追加
- リストの先頭を削除
- リストの途中を削除
- リストの最後を削除
つぎのことが分かっています。
追加する場合
- 追加したい位置の直前にあるオブジェクトを参照できれば簡単に行える。
削除する場合
- 取り除きたい位置の直前にあるオブジェクトを参照できれば簡単に行える。
つながっているものすべてを表示するメソッド
これは以前に作成したものです。
これをもとにして、次の2つのメソッドを作成します。
つながっている個数を返すメソッド
つながっている個数を返すメソッドlengthを作ります。
返す値はintです。次の修正が必要。
- メソッドの型宣言
- return
処理内容
- showAllではオブジェクト1つずつに対してshowを行っていたので、 ここでカウントを行えばよい。
変数の宣言と初期化を加え、不要な部分を除けば完成。
指定された位置にあるオブジェクトを返すメソッド