構造体の配列 |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
プログラム言語を名前順に並べる。
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
流れ図 |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
構造体文法機能 レコードを表す。 フィールドを”メンバー”という。 メンバーの参照とメンバーへの代入が可能 |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
形式 (1)構造体の宣言 (構造体タグは省略可能) struct 構造体タグ{ メンバ1; メンバ2; ... } |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
構造体の変数宣言 struct { ... } 変数; 構造体タグをつけて構造体が宣言されている場合 struct 構造体タグ 変数; |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
typedef宣言を利用した構造体宣言 typedef struct { ... } 型名; 上で定義した型を使った変数宣言 型名 変数; |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
(2)メンバの参照 変数名.メンバ (3)メンバへの代入 変数名.メンバ = 値; |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
ソートプログラム(名前順に並べる) #include<stdio.h> #include<string.h> void initList(void); void print_list(void); void sort(void); struct list{ char name[15]; int next; }; struct list language[11]; int main( void ){ int i=0; initList(); sort(); print_list(); return 0; } void initList(void){ int i= 0; for(i=1;i<=10;i++){ printf("Input Language %d:", i); scanf("%s", language[i].name); language[i].next = 0; } } void print_list(void){ int i; for(i=language[0].next; i>0; i = language[i].next){ printf("%s\n", language[i].name); } } void sort(void){ int i,j,k; language[0].next = 1; for(i=2; i<=10; i++){ j = language[0].next; k = 0; for( ; j != 0; k=j, j= language[j].next){ if(strcmp(language[j].name, language[i].name)>0) break; } language[i].next = j; language[k].next = i; } } |