はじめての C
typedef 宣言を使って mklist.2.c を書き換えよ。
まずは ヘッダーファイルを作成。
- /* list1.h */
- struct List {
- int data;
- struct List *next;
- };
- typedef struct list LIST; /* ここで宣言 */
つぎに mklist.6.c として書き換える。
- /* mklist.6 */
- #include
- #include "list1.h"
- LIST *get_mem(void);
- void show_list(LIST *);
- main()
- {
- LIST *start, *curr, *prev;
- int n;
- prev = NULL;
- while (scanf("%d", &n) != EOF) {
- curr = get_mem();
- curr->data = n;
- if (prev == NULL) {
- start = curr;
- } else {
- prev->next = curr;
- }
- prev = curr;
- }
- curr->next = NULL;
- show_list(start);
- printf("\n");
- }
- LIST *get_mem(void) {
- LIST *pm;
- pm = (LIST *)malloc(sizeof(LIST));
- return pm;
- }
- void show_list(LIST *pd) {
- while (pd != NULL) {
- printf("%d ", pd->data);
- pd = pd->next;
- }
- }
双方向リストの場合も list2.h としてヘッダーファイルを作成するといいかもしれない(もちろん 型の名前は変えて)。