順序棧初始化、清空、銷燬、求表長、判棧空
阿新 • • 發佈:2020-10-20
#define StackMaxSize 100 typedef struct { int *base;//棧底指標 int *top;//棧頂指標 int stacksize;//棧可用最大容量 }SqStack; //棧的初始化 bool InitStack(SqStack &s) { s.base = new int[StackMaxSize]; if (!s.base)//判斷分配記憶體有沒有成功 return false; s.top = s.base; s.stacksize = StackMaxSize; returntrue; } //判棧空 bool StackEmpty(SqStack s) { if (s.base == s.top) return true; else return false; } //求棧長 int StackLength(SqStack s) { return s.top - s.base; } //清空順序棧 bool StackClear(SqStack &s) { if (s.base) s.top = s.base;//直接將top下移下來就可 return true; } //銷燬順序棧bool StackDestroy(SqStack &s) { if (s.base) delete s.base; s.stacksize = 0; s.base = s.top = NULL;//避免野指標生成 } //入棧操作 bool PushStack(SqStack &s, int e) { if (s.top - s.base == s.stacksize) return false; *s.top = e; s.top++; return true; }