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番目のデータへポインタを得ることが できる。
© Copyright 2024 ExpyDoc