(5)进栈Push(&S,e) 在栈不满的条件下,先将栈指针增1,然后在 该位置上插入元素e。对应算法如下: int Push(sqstack*&s, ElemType e) if(>top==MaxSize-1) return 0 栈满的情况,即栈上溢出* S→>top++; S->elem s->top=e; return 1
(5)进栈Push(&s,e) 在栈不满的条件下,先将栈指针增1,然后在 该位置上插入元素e。对应算法如下: int Push(SqStack *&s,ElemType e) { if (s->top==MaxSize-1) return 0; /*栈满的情况,即栈上溢出*/ s->top++; s->elem[s->top]=e; return 1; }
(6)出栈Pop(&s,&e) 在栈不为空的条件下先将栈顶元素赋给e, 然后将栈指针减1。对应算法如下: int Pop(sqstack*&s, ElemType &e) if(s->top==-1)return 0; 栈为空的情况即栈下溢出* e=s->elems->top: S→>top-; return 1
(6)出栈Pop(&s,&e) 在栈不为空的条件下,先将栈顶元素赋给e, 然后将栈指针减1。对应算法如下: int Pop(SqStack *&s,ElemType &e) { if (s->top==-1) return 0; /*栈为空的情况,即栈下溢出*/ e=s->elem[s->top]; s->top--; return 1; }
()取栈顶元素 GetTop(s) 在栈不为空的条件下将栈顶元素赋给e。 对应算法如下: int GetTop(sqstack *s, ElemType &e) if(s->top==-1)return 0; 栈为空的情况,即栈下溢出 e=s->elem s->top; return
(7)取栈顶元素GetTop(s) 在栈不为空的条件下,将栈顶元素赋给e。 对应算法如下: int GetTop(SqStack *s,ElemType &e) { if (s->top==-1) return 0; /*栈为空的情况,即栈下溢出*/ e=s->elem[s->top]; return 1; }
(8)显示栈中元素 DispStack(s) 从栈顶到栈底顺序显示栈中所有元素。 对应算法如下: void Disp Stack(sqstack*s) i; int i for (i=s->top; i>=0; i-) printf( %c, s->elemiD; printf(In);
(8)显示栈中元素DispStack(s) 从栈顶到栈底顺序显示栈中所有元素。 对应算法如下: void DispStack(SqStack *s) { int i; for (i=s->top;i>=0;i--) printf("%c ",s->elem[i]); printf("\n"); }
3.1.3的链式存储结构及其基本运算的实现 采用链式存储的栈称为链栈这里采用单链表 实现。 链栈的优点是不存在栈满上溢的情况。我 们规定栈的所有操作都是在单链表的表头进行 的,下图是头结点为head的链栈,第一个数据结 点是栈顶结点,最后一个结点是栈底结点。栈中 元素自栈顶到栈底依次是a1、a2、…、a1
3.1.3 栈的链式存储结构及其基本运算的实现 采用链式存储的栈称为链栈,这里采用单链表 实现。 链栈的优点是不存在栈满上溢的情况。我 们规定栈的所有操作都是在单链表的表头进行 的,下图是头结点为*lhead的链栈,第一个数据结 点是栈顶结点,最后一个结点是栈底结点。栈中 元素自栈顶到栈底依次是a1、a2、…、an