Stack
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
Node* next;
};
typedef struct Node Stack_Node;
typedef Stack_Node* Linked_stack;
Linked_stack top = NULL;
int isEmpty() {
if (top == NULL)return 1;
else
return 0;
}
void push(int data) {
Linked_stack new_node;
new_node = (Linked_stack)malloc(sizeof(Stack_Node));
new_node->data = data;
new_node->next = top;
top = new_node;
}
int pop()
{
Linked_stack ptr;
int temp;
if (isEmpty())
{
printf("堆疊為空\n");
return -1;
}
else
{
ptr = top; //指向堆疊的頂端
temp = ptr->data; //取出堆疊資料
top = top->next; //將堆疊頂端的指標指向下一個節點
free(ptr); //將節點占用的記憶體釋放
return temp;
}
}
int main(void)
{
int value;
int i;
printf("請依序輸入10筆資料:\n");
for (i = 0; i<10; i++)
{
scanf("%d", &value);
push(value);
}
printf("====================\n");
while (!isEmpty()) {
printf("堆疊彈出的順序為:%d\n", pop());
}
pop();
system("pause");
return 0;
}