T版主是台湾人?为什么总是用繁体字,好多都不认识啊
一片落叶掉进了回忆的流年。
#include <stdio.h> #include <stdlib.h> #include <conio.h> // 結點數據結構 struct Node { int Value; // 數據的内容(按需要可爲任何數據類型) Node* Next; // 數據的地址 }; // 函數原型 void Pause(void); Node* GetNode(void); void ShowData(const Node* node); void ListLinkData(const Node* head); void FreeLink(Node* head); // 程序主入口 int main(void) { Node* linkHead = GetNode(); if (linkHead != NULL) { Node* p = linkHead; Node *node; while ((node = GetNode()) != NULL) { p->Next = node; p = node; } } ListLinkData(linkHead); FreeLink(linkHead); Pause(); return EXIT_SUCCESS; } // 暫停等待用戶按鍵 void Pause(void) { printf_s("\n按任意鍵繼續..."); _getch(); } // 創建一個結點數據並從鍵盤輸入內容,以輸入0爲結束標識 Node* GetNode(void) { Node* node = (Node*)calloc(1, sizeof(Node)); if (node != NULL) { do { printf_s("請輸入結點數據: "); fflush(stdin); // 清空標準輸入流緩衝區 node->Value = 0; } while ((scanf_s("%d", &node->Value) != 1) && (node->Value != 0)); if (node->Value == 0) { // 輸入零結束時應把當前已申請的內存釋放掉 free(node); node = NULL; } } else { printf_s("內存不足"); } return node; } // 輸出結點的信息 void ShowData(const Node* node) { printf_s("Adress = %p, Value = %d, Next = %p\n", node, node->Value, node->Next); } // 從指定的結點開始列出鏈表數據 void ListLinkData(const Node* head) { if (head != NULL) { const Node* node = head; do { ShowData(node); node = node->Next; } while (node != NULL); } } // 刪除並釋放從指定節點開始的鏈表數據 void FreeLink(Node* head) { if (head != NULL) { Node* next; do { next = head->Next; free(head); head = NULL; head = next; } while (next != NULL); } }