因为用一个长度为n的数组顺序储存一个栈然而数组是从0~n-1栈空为top==n那么栈满为top==1。t数组长度固定为n,则可存储n个元素,top=n表示栈空,向栈中插入一个元素后,top-1=n-1,n个元素存储完了就满栈了,top的值就等于0了。
初始化为空栈,规定空栈的时候指向-1,这样在有第一个元素入栈的时候栈顶指针就可以通过自加指向0元素,从而避免其它判断。
-1表示栈空,初始化时变为0,这主要是对于数组来说的。如果是链表的话,就不是这样了。
指针就是下标,下标就是位序。位序变量top=-1,就是位序为-1:-1的位序当然是非法的,因为C语言中数组下标是从0开始的,-1的位序取不到值,访问a[-1]异常。第二问:top可以赋值,指针变量top占有特殊的内存空间,这个空间存放的不是普通数,而是空间的地址,说成是空间的位序也不是不可以的。
栈里没元素就是空闲,表示时,指针不指向有效空间即可。若是链表,用指针类型,就要用null表空。用数组则可用整数型,这里top放为-1是运算方便,可以加减一就进出栈。实际上放-2也是可表栈空但运算不便。另一端,同样,一个越界值表空,max最好用。
图中并没有s.top-1 这里涉及到两种不同的策略,那就是(a)s.top是直接指向栈顶呢还是(b)s.top指向栈顶之上的空位置。不管哪种策略,都存在s.top-1的问题。对于(a), 出栈的时候,先取栈顶s.top指向的元素,再s.top-1;对于(b),出栈的时候,先s.top-1,再取s.top指向的元素。入栈的...
为什么入栈时栈顶指针..为什么入栈时栈顶指针是减操作(top=top-1),退栈时栈顶指针是加操作(top=top+1)?
题目一道数据结构的题目顺序栈用data[0..n-1]存储数据,栈顶指针为top,其初始值为0,则出栈元素x的操作是___\x0d\x0d\x0d为什么答案是 top--;x=data[top];\x0d\x0d是不是错了相关知识点: 试题来源: 解析 2017-10-03 反馈 收藏
C.top = top-1; V[top] = x; \x05\x05D.V[top] = x; top = top-1;为什么不是A啊?TOP不是应该往上吗? 扫码下载作业帮搜索答疑一搜即得 答案解析 查看更多优质解析 解答一 举报 C啊,现在空栈是指针在最大下标以上,自然是进栈就需要往下减,并且合法下标只是1..n 解析看不懂?免费查看同类题视...