[C語言] Stack

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;
}