76543 p
top 7654321- 1
设S是 SeqStack类型的指针变量。若栈底 位置在向量的低端,即s->data[0]是栈底 元素,那么栈顶指针s->top是正向增加的, 即进栈时需将s->top加1,退栈时需将s top减1。因此,s->top<0表示空栈,s top= stacksize-1表示栈满。当栈满时再 做进栈运算必定产生空间溢出,简称“上 溢”;当栈空时再做退栈运算也将产生溢出, 简称“下溢”。上溢是一种出错状态,应 该设法避免之;下溢则可能是正常现象, 因为栈在程序中使用时,其初态或终态都 是空栈,所以下溢常常用来作为程序控制 转移的条件
设S是SeqStack类型的指针变量。若栈底 位置在向量的低端,即s–>data[0]是栈底 元素,那么栈顶指针s–>top是正向增加的, 即进栈时需将s–>top加1,退栈时需将s– >top 减1。因此,s–>top<0表示空栈, s– >top =stacksize-1表示栈满。当栈满时再 做进栈运算必定产生空间溢出,简称“上 溢”;当栈空时再做退栈运算也将产生溢出, 简称“下溢”。上溢是一种出错状态,应 该设法避免之;下溢则可能是正常现象, 因为栈在程序中使用时,其初态或终态都 是空栈,所以下溢常常用来作为程序控制 转移的条件
3.1.3、判断栈满 int stackfull(segstack * s) return(s->top==stacksize-1) 3.1.4、进栈 void push (seastack *s, datatype x) if (stackfull(s)) printf(“ stack overflow”) s->data[++s->top]=x
3.1.3、判断栈满 int stackfull(seqstack *s) { return(s–>top==stacksize-1); } 3.1.4、进栈 void push(seqstack *s,datatype x) { if (stackfull(s)) printf(“stack overflow”); s–>data[++s–>top]=x; }
3.1.5、置空栈 void initstack(segstack *s) s->top=-1; 3.1.6、判断栈空 int stackempty(seqstack as) return(s->top==-1)
3.1.5、置空栈 void initstack(seqstack *s) { s–>top=-1; } 3.1.6、判断栈空 int stackempty(seqstack *s) { return(s–>top==-1); }
3.1.7、退栈 datatype pop ( segstack *s) if (stackempty(s)) error(“ stack underflow”); x=S->dataltop s->top-- return (x) //return(s->datals->top-])
3.1.7、退栈 datatype pop(seqstack *s) { if (stackempty(s)) error(“stack underflow”); x=s–>data[top]; s–>top--; return(x) //return(s–>data[s–>top--]); }