1.存储结构
- typedef struct
- {
- elementtype data[maxsize];
- int top;
- }seqstack;
2.顺序栈上运算的实现
- 初始化栈:初始化栈就是将栈设置为空,即将其元素个数设为0。由于顺序栈中没有设置元素个数这个分量,只有栈顶指针top,而top所指向的元素下标比其个数少1,因此,设置栈为空可通过将top设为-1来实现。
- void init_stack(seqstack * &s)
- {s->top=-1;}
- 判断栈是否为空:就是要判断top的值是否为-1。
- BOOL stack_empty(seqstack s)
- {if(s.top==-1)return TRUE;
- esle return FALSE;
- }
- 取栈顶元素:若栈不为空,返回栈顶元素的指,否则返回出错信息。较为通用的方法是将返回的元素以参数的方式给出。
- void stack_top(seqstack *s,elementtype &x)
- {
- if(stack_empty)error("栈为空");
- else x=s->data[s->top];
- }
- 入栈:插入前首先要判断是否栈已满,否则不能插入。
- void push_stack(seqstack *s,elementtype x)
- {
- if(s->top==maxsize-1)error("溢出");
- else s->data[++s->top]=x;
- }
- 出栈:由于有了取栈顶元素的函数,故可将出栈运算简单设置成不返回结果的函数形式,也可设置为带结果的函数形式。
- void pop_stack(seqstack *s,elementtype &x)
- {
- if(stack_empty(*s))error("栈空,不能删除");
- else x=s->data[s->top--];
- }
- 判断栈是否已满:与判断栈空的函数形式类似。
- BOOL stack_full(seqstack s)
- {
- if(s.top==maxsize-1)return TRUE ;
- else return FALSE;
- }
转载于:https://blog.51cto.com/yinpengshuai/388170