栈顶指针
值为当前栈顶元素的下标值。
当有数据
入栈
时,会先执行栈顶指针自加。
初始化为空栈,
规定空栈的时候指向-1,这样在有第一个元素入栈的时候栈顶指针就可以通过自加指向0元素,从而避免其它判断。
调用c函数是把实参值传给形参,在crnode(top)
这一句处,是把top
这个指针的值,也就是NULL
传个函数crnode
的形参,在进栈时,只是对crnode函数里的
top
变量做了改变,如top
=
p
但是
在main函数里的
top
和
crnode函数里的
top
完全是两个不同的变量,所以main
函数里的
top
始终为NULL。
另外说一下,你刚开始学编程吧,编程要仔细理解你写的东西到底做什么用,也就是真正了解你的代码,就像你写的那个初始化函数,仅仅是返回一个空值给了top,其他什么都没做,还不如直接
top
=
NULL
来的爽快。
又例如这个函数
void
outnode(stacknode
*top)//出栈
{
stacknode
*p
int
x
while(top!=NULL)
{
x=top->data
printf("%d\t",top->data)
p=top->next
top=p
}
}
你定义的
x
是干什么用的,仅仅是为了给它赋个值吗?
等等吧,再好好看看书吧,编程要仔细理解