サイズ: 1676
コメント:
|
← 2010-11-24 00:58:06時点のリビジョン9 ⇥
サイズ: 2112
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
#acl All: | |
行 39: | 行 38: |
例2、例3と同じ処理をするメソッドを作ります。 このような形で呼び出されるものとします。 |
|
行 44: | 行 46: |
a.add1(new Chain()); | a.add(new Chain()); |
行 48: | 行 50: |
Chain型の引数を1つとるので、メソッドはこのような形になります。 | |
行 50: | 行 52: |
void add1(Chain c) | void add(Chain c) |
行 54: | 行 56: |
mainメソッドから上のように呼び出された場合は * aの値がthisに * 引数の値がcに 対応付けられて本体が実行されるので、図に示すような処理を記述すればよい。 |
オブジェクトをつなぐメソッド
オブジェクトを沢山つなげることができました。
うまい方法を使うと、新しいオブジェクトを先頭に追加する方が楽にできます。
例1
変数aが、いくつかつながったオブジェクトを参照しており、 変数tempが1つのオブジェクトを参照している場合です。
赤矢印でしめしたようにつなぎ変えることで、1つのオブジェクトを追加できます。
この処理はこのように書けます。
temp.next = a; a = temp;
例2
赤矢印でしめした位置に追加する場合。
追加したい位置の直前にあるオブジェクトを参照できなければなりません。
変数pがその位置を指しているとします。
pが指しているオブジェクトの直後に、 tempが示している1つのオブジェクトを追加する処理はこのように書けます。
temp.next = p.next; p.next = temp;
例3
例2の処理はchainが沢山つながった途中をpが指している場合でも正しく動作します。
オブジェクトをつなぐメソッド
例2、例3と同じ処理をするメソッドを作ります。
このような形で呼び出されるものとします。
Chain型の引数を1つとるので、メソッドはこのような形になります。
mainメソッドから上のように呼び出された場合は
- aの値がthisに
- 引数の値がcに
対応付けられて本体が実行されるので、図に示すような処理を記述すればよい。