c语言中为什么栈的初始化时候栈顶指针要指向-1?

Python019

c语言中为什么栈的初始化时候栈顶指针要指向-1?,第1张

这种初始化是用于线性栈的,也就是用一个数组来组成栈,

栈顶指针

值为当前栈顶元素的下标值。

当有数据

入栈

时,会先执行栈顶指针自加。

初始化为空栈,

规定空栈的时候指向-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

是干什么用的,仅仅是为了给它赋个值吗?

等等吧,再好好看看书吧,编程要仔细理解