codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
/* 連結リスト(一方向)の最後に要素を追加するプログラムを作成しなさい。 ただし、連結リストの最後の要素を指すポインタを保持している場合と保持し ていない場合について、プログラムを作成すること。 最後の要素を指すポインタを保持している場合 */ #include <stdio.h> #include <stdlib.h> #define SIZE_BUF (256) /* 一行入力バッファサイズ */ /* 座標リストノード構造体 */ typedef struct T_Node { struct T_Node *pNext; /* Nextポインタ */ int value; /* 値 */ } T_Node; /* リストダンプ */ void dumpList(T_Node *p) { printf("\n ======== dump List ========= \n"); for (;p != NULL; p = p->pNext) { printf("%d\n", p->value); } } /* リスト解放 */ void freeList(T_Node *p) { T_Node *pDel; while (p != NULL) { pDel = p; p = p->pNext; free(pDel); } } int main(void) { T_Node* head = NULL; T_Node *p; char buf[SIZE_BUF]; for (;;) { /* リストノードバッファ取得 */ p = malloc(sizeof(T_Node)); p->pNext = NULL; if (p == NULL) { /* メモリエラー */ fprintf(stderr, "memory err\n"); exit(-1); } /* 入力 */ printf("input numbar (END Ctrl-D)> "); if (fgets(buf, SIZE_BUF, stdin) == NULL) { break; } if (sscanf(buf, "%d ", &p->value) != 1) { printf("format error!! \n"); continue; } if (head == NULL) { /* リストが空 */ head = p; } else { T_Node* t = head; while(t->pNext != NULL){ t = t->pNext; } t->pNext = p; } } /* リストダンプ */ dumpList(head); /* リスト解放 */ freeList(head); return 0; }
Private
[
?
]
Run code
Submit