栈的问题
这是两个栈共享一个空间
#define M 500
typedef stuct {
elemtype stuct[M];
int top[2];
}DuStack;
初始化栈。
voidInitDuStack(DuStack *s)
{
s->top[0]=0;
s->top[1]=M-1;
}
int DuPush(DuStack *s,int i,elemtype x)
{
if(i!=0&&i!=1)
{printf("error!");
return(0);
}
if(s->top[0]==s->top[1])
{printf("over flow!");
return(0);
}
s->stack[s->top[i]]=x;
return(1);
}
在这里面 (i!=0&&i!=1)的作用是干什么的,想不明白。
还有一个问题是:
单链表中判断栈空。
int StackEmpty(SqStack *s)
{
if(s->top==0)
return(1);
else
return(0);
}
因为栈顶指示器TOP指示栈顶元素在顺序栈中的位置,但是数组下标从0开始,所以TOP指向实际栈顶元素后面的一个空位置,所以这里s->top指的是实际栈顶元素呢还是实际栈顶元素后面的元素,如果是实际栈顶元素后面的元素,那可是空的呀。如果是实际栈顶元素那么看一下下面的:
取栈顶元素:
elemtypeGetTop(SqStack *s)
{
if(s->top==0) return(0);
else return(s->stack[--s-top]);
}
如果 s->top指的是实际栈顶元素,那么为什么还有s->stack[--s-top])呢,
我很迷茫呀。