#include #include //提供malloc()原型 #include //提供true false原型 #define MaxSize 10 #define ERROR -1 typedef struct SNode *Stack; typedef int ElementType ; ... ...
#include <stdio.h> #include <stdlib.h> //提供malloc()原型 #include <stdbool.h> //提供true false原型 #define MaxSize 10 #define ERROR -1 typedef struct SNode *Stack; typedef int ElementType ; struct SNode { ElementType *Data; //數組存放數據 int Top; //top指明棧頂的位置 int Maxsize; //堆棧最大容量 }; Stack CreateStack(int Max) { Stack S = (Stack)malloc(sizeof(struct SNode)); S->Data = (ElementType *)malloc(Max * sizeof(ElementType)); S->Top = -1; S->Maxsize = Max; return S; } bool Push(Stack PtrS,ElementType item) { if(PtrS->Top==MaxSize-1) //判斷數組是否已滿 { printf("堆棧已滿!"); return false; } else { PtrS->Data[++(PtrS->Top)] = item; //添加元素並更新top return true; } } ElementType Pop(Stack PtrS) { if(PtrS->Top == -1) { printf("堆棧空"); //判斷數組是否已空 return ERROR; } else { return (PtrS->Data[(PtrS->Top)--]); //返回值並更新top } } int main() { Stack Ptr; int Tmp; Ptr=CreateStack(10); //初始化棧 Push(Ptr,10); //在數組0的位置Push 數值10 Tmp = Pop(Ptr); // 取出棧的最上面的值賦給變數Tmp printf("%d",Tmp); return 0; }