菜鸟请教c语言数据结构
题目是:假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈tws的三个操作:初始化inistack(tws)、入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈。
在答案中
定义双向栈
#define STACK_INIT_SIZE_100;
Typedef struct{
SElemType *base;
SElemType *top0,*top1;
Intstacksize;
}tws;
压栈:Status Push(tws &S,int I,SElemType x){
If(S.top0>S.top1)
Exit(OVERFLOW);
If(i==0){
S.base[S.top0]=x;
S.top0++;
}
Else if(i==1){S.base[S.top1]=x;S.top1++;}
Else return ERRPR;
Return OK;
}
请问在定义的时候top0和top1都是指针类型,
那么在压栈的时候为什么是S.base[S.top0]=x;而不是*S.top0=x;