数据结构 关于栈top指针位置问题
发布网友
发布时间:2022-04-26 10:13
我来回答
共2个回答
热心网友
时间:2022-06-27 05:48
1、空栈的时候top=base-1,就是栈外了。
2、入栈的时候先top++,然后将元素push入栈,所以“非空栈中的栈顶指针始终在栈顶元素的下一个位置”是正确的,但更应该理解为将要入栈位置的前一个位置(目前的栈顶元素位置)。
3、栈空判断top==-1,这样的判断没见过。有也应该是((top-base)==-1),或者top<=(base-1)
但更一般的情况是用base是否为空来判断,而不是top
热心网友
时间:2022-06-27 05:49
首先有错误
top是个指针,应该是s->top=null;
还有我要说的是后面的malloc有问题?
我还从没见过p=malloc(sizeof*s)
typedef
struct
snode
*slink;//替换,后面的link为struct
snode
*型的
typedef
struct
snode
{stackitem
element;
slink
next;}stack
node;//定义一个struct
snode
型的结构体,并用stack
node替换
slink
newstacknode()//
新建一个栈结点的结构体
{
slink
p;
if
((p=malloc(sizeof(stacknode)))==0)//动态分配内存失败则输出exhausted
memory
error("exhausted
memory");
else
return
p
;//成功返回结构体指针;
}
typedef
struct
lstack
*stack;//一样是替换
typedef
struct
istack//定义栈结构体
{
slink
top;
}
lstack
;
stack
stackinit()//新建栈
{
stack
s=malloc(sizeof
*s);//先定义个栈,相当于头指针,用来识别是否栈空,当栈空时
//栈顶指针为空
s->top=null;//初始化,top为空
return
s;
}