1. 程式人生 > 實用技巧 >順序棧初始化、清空、銷燬、求表長、判棧空

順序棧初始化、清空、銷燬、求表長、判棧空

#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;
    return
true; } //判棧空 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; }