首页 热点资讯 义务教育 高等教育 出国留学 考研考公

数据结构 关于栈top指针位置问题

发布网友

我来回答

2个回答

热心网友

1、空栈的时候top=base-1,就是栈外了。
2、入栈的时候先top++,然后将元素push入栈,所以“非空栈中的栈顶指针始终在栈顶元素的下一个位置”是正确的,但更应该理解为将要入栈位置的前一个位置(目前的栈顶元素位置)。
3、栈空判断top==-1,这样的判断没见过。有也应该是((top-base)==-1),或者top<=(base-1)
但更一般的情况是用base是否为空来判断,而不是top

热心网友

首先有错误
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;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com