次のプログラムでは、リンク・リストの整数の合計を検出します。
/** ** Example program illustrating structures using linked lists **/ #include <stdio.h> struct record { int number; struct record *next_num; }; int main(void) { struct record name1, name2, name3; struct record *recd_pointer = &name1; int sum = 0; name1.number = 144; name2.number = 203; name3.number = 488; name1.next_num = &name2; name2.next_num = &name3; name3.next_num = NULL; while (recd_pointer != NULL) { sum += recd_pointer->number; recd_pointer = recd_pointer->next_num; } printf("Sum = %d¥n", sum); return(0); }
構造体型 record には、整数 number と next_num の 2 つのメンバーが含まれます。これは、record 型の構造変数を指すポインターです。
record 型変数である name1、name2、 および name3 に、次の値が割り当てられます。
変数 recd_pointer は、record 型の構造体を指すポインターです。 この変数を name1 のアドレス (リンク・リストの先頭) に初期化します。
while ループによって、recd_pointer が NULL になるまで リンク・リストがスキャンされます。ステートメント、
recd_pointer = recd_pointer->next_num;
では、ポインターをリスト内の次のオブジェクトに進めます。
関連参照