堆疊(先進後出) – 使用鏈結(Link)實作(C 語言動態記憶體宣告)
堆疊(先進後出) – 使用鏈結(Link)實作(C 語言動態記憶體宣告)
資料來源: http://openhome.cc/Gossip/AlgorithmGossip/StackByLink.htm
//堆疊(先進後出) – 使用鏈結(Link)實作(C //http://openhome.cc/Gossip/AlgorithmGossip/StackByLink.htm #include <stdio.h> #include <stdlib.h> struct node { }; typedef struct node Node; Node* creates(void); // 建立堆疊 int isEmpty(Node*); // 堆疊已空 int stacktop(Node*); // 傳回頂端元素 Node* add(Node*, int); // 新增元素 Node* delete(Node*); // 刪除元素 void list(Node*); // 顯示所有內容 int main(void) { printf(“\n\n請輸入選項(-1結束):“); printf(“\n(1)插入值至堆疊“); printf(“\n(2)顯示堆疊頂端“); printf(“\n(3)刪除頂端值“); printf(“\n(4)顯示所有內容“); printf(“\n\$c>”); scanf(“%d”, &select); if(select == -1) break; switch(select) { case 1: printf(“\n輸入值:“); scanf(“%d”, sTop = add(sTop, input); break; case 2: printf(“\n頂端值:%d”, stacktop(sTop)); break; case 3: sTop = delete(sTop); break; case 4: list(sTop); break; default: printf(“\n選項錯誤!“); } } Node* creates() { } int isEmpty(Node* top) { } int stacktop(Node* top) { } Node* add(Node* top, int item) { printf(“\n記憶體配置失敗!“); exit(1); } Node* delete(Node* top) { printf(“\n堆疊已空!“); return NULL; } void list(Node* top) { printf(“%d “, tmpnode = tmpnode->next; } |