TList

TList
リスト構造とは?
• 複数のデータを扱うために、
データの内容と、次のデータへのポインタを持つ
構造体を使う。
struct card {
char *name; /* 単語の先頭アドレス */ struct
card *next; /* 次の構造体変数のアドレス */
};
TList
• リスト構造 : 単方向リスト
カード2
カード0
Apple
cherry
1
カード1
Orange
2
TList
•
•
•
•
•
データはmallocやnewで一個づつ用意できる。
リストの最後は、ポインタをNULLにしておく。
配列と違い、メモリ上では連続しなくてもよい。
どの場所にも新しいデータを追加できる。
どの場所でもデータを削除できる。
通常の配列
int data[100];
100個まで対応、追加できない。
int *data,number;
number = StrToInt(Edit1->Text);
data = new int[number];
実行時に最大値を決められるが、
追加はできない。
TList
リスト構造なら、データを任意の場所に追加できる。
カード2
カード0
Apple
cherry
31
カード1
カード3
peach
Orange
1
2
TList
• リスト構造 : 双方向リスト
カード1
カード0
Apple
cherry
2
2
カード2
Orange
1
0
TList
• リスト構造を扱うためのクラス。
• そのまま変数を作るのではなくて、
ポインタにnewによって実体を割り当てる。
TList *list = new TList;
または
TLst *list;
list = new TList;
TList
• データを追加するには・・・
TList ではデータそのものを格納するのではなく
データのアドレスを格納する。
Add関数:リストの最後にデータを追加する。
card data1;
list->Add(&data1);
TList
• データをリストに挿入する
TListでは、メンバ関数
void __fastcall Insert(int Index, void * Item);
をつかうことで、Index番目にデータを挿入できる。
Indexは0番目から始まっている。
TList
• あるデータをリストから削除する
TListでは、メンバ関数
void __fastcall Delete(int Index);
をつかうことで、Index番目のデータへのポインタを
削除できる。Indexは0番目から始まっている。
データ自体は消えていないことに注意。
単にリストから外れただけである。
TList
• リストに保存されているデータの数は?
TListでは、メンバ変数 Countが、
リストに保存されているデータの数をもっている。
TList
• リストに保存されているデータは?
TListでは、
__property void * Items[int Index];
により、Index番目のデータへポインタを得ることが
できる。