リストを二つの1次元配列で実現する。配列要素box[ i ] と
next[ i ] の対がリストの一つの要素に対し、box[ i ] に要素の
値が入り、next[ i ] に次の要素の番号が入る。配列が図の
状態の場合、リストの3番目と4番目との間に値がHである
要素を挿入したときの next[ 8 ] の値はどれか。ここで、
next[ 0 ] がリストの先頭 (1番目) の要素を指し、next[ i ]の
値が0である要素はリストの最後を示し、next[ i ] の値が
空白である要素はリストに連結されていない。
0 1 2 3 4 5 6 7 8 9
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
box │ │A│B│C│D│E│F│G│H│I│
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
0 1 2 3 4 5 6 7 8 9
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
next│1│5│0│7│ │3│ │2│ │ │
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
ア 3 イ 5 ウ 7 エ 8
挿入前の状態は、
next[ 0 ] = 1、box[ 1 ] = A
next[ 1 ] = 5、box[ 5 ] = E
next[ 5 ] = 3、box[ 3 ] = C
next[ 3 ] = 7、box[ 7 ] = G
next[ 7 ] = 2、box[ 2 ] = B
next[ 2 ] = 0
で、値は“AECGB”である。
3番目と4番目の間、つまりCとGの間にHを入れるには、
next[ 0 ] = 1、box[ 1 ] = A
next[ 1 ] = 5、box[ 5 ] = E
next[ 5 ] = 3、box[ 3 ] = C
next[ 3 ] = 8、box[ 8 ] = H
next[ 8 ] = 7、box[ 7 ] = G
next[ 7 ] = 2、box[ 2 ] = B
next[ 2 ] = 0
とする必要がある。
従って、 next[ 8 ] = 7 である。
EXCEL VBAのご相談なら ファーストマクロ へ
タグ:リスト