数组 问题

_SNIPER_ 2010-03-26 07:00:47
(1)假设用一个长度为50 的数组(数组元素的下标从0 到49 )作为栈的存储空间,栈底指针bottom 指
向栈底元素,栈顶指针top 指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有多少个
个元素?
这个题答案给的是19. 为什么不是20呀 希望大虾们帮忙解释一下 谢谢拉
...全文
249 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hancker 2010-03-27
  • 打赏
  • 举报
回复
应该是19~TOP指针指向的第一个数据+1
栈空:buttom=top=-1
zhang2633320304 2010-03-27
  • 打赏
  • 举报
回复
这个好像是数学问题
楼主画画就可以明白
楼主是多减了 我以前也犯过同样的毛病
栈底和栈顶都有元素
如果49-30的话没有包含30这个位置的元素 即49个元素减去了30个元素
而30这个位置上也有元素 应该是49-29 才是楼主想要的结果

不知楼主明白了没
悠然红茶 2010-03-27
  • 打赏
  • 举报
回复
从LZ的描述中,大概可以知道这个堆栈是从高地址向下生长的。一开始bottom和top都是49,此时栈为空。压入一个元素后,top变为48,此时栈中有1个(49-48)元素。那么当top为30时,栈中应该有49-30=19个元素。
invail 2010-03-26
  • 打赏
  • 举报
回复
over xuexi
fengqiang6863 2010-03-26
  • 打赏
  • 举报
回复
20了
_SNIPER_ 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lhcwjy 的回复:]
你可以这样想一想:当bottom和top都等于0的时候表示是空栈,如果我们向栈中压入了一个元素,那么bottom=0,top=1;元素数=1-0=1;而不是1-0+1
[/Quote]
感觉这个比较合理呀 大虾们觉得呢
dick_china 2010-03-26
  • 打赏
  • 举报
回复
这个栈是你自己定义的还是类似于stl标准给的?
这个指针自然也可以自己定义下,没有人规定栈尾到底指向元素后一个还是当前那个
heis07w 2010-03-26
  • 打赏
  • 举报
回复
栈的定义没给清楚,空栈top是-1还是0?
shnxin 2010-03-26
  • 打赏
  • 举报
回复
其实对top的理解方式有两种,第一种方式的模拟代码如下,此方式下元素个数为19个:
int stack[50];
int top;
void init(){
top=49;
}
void push(int data){
if(!isFull()){
stack[top]=data;
--top;
}
}
int pop(){
if(!isEmpty()){
++top;
return stack[top];
}
}
bool isEmpty(){
return (top==49)?true:false;
}
bool isFull(){
return (top==-1)?true:false;
}
第二种理解方式的模拟代码如下,这种情况下元素个数为20:
int stack[50];
int top;
void init(){
top=50;
}
void push(int data){
if(!isFull()){
--top;
stack[top]=data;
}
}
int pop(){
if(!isEmpty()){
++top;
return stack[top-1];
}
}
bool isEmpty(){
return (top==50)?true:false;
}
bool isFull(){
return (top==0)?true:false;
}
cattycat 2010-03-26
  • 打赏
  • 举报
回复
如果栈底不存放元素的话,还浪费了一个空间。
BT六眼飞鱼 2010-03-26
  • 打赏
  • 举报
回复
我觉得是不是栈顶元素只是指向作用?和单链表一样 head一般不存数据的
cattycat 2010-03-26
  • 打赏
  • 举报
回复
感觉就是20。
白云飘飘飘 2010-03-26
  • 打赏
  • 举报
回复
你可以这样想一想:当bottom和top都等于0的时候表示是空栈,如果我们向栈中压入了一个元素,那么bottom=0,top=1;元素数=1-0=1;而不是1-0+1
昵称很不好取 2010-03-26
  • 打赏
  • 举报
回复
如果你的栈为空栈,那么栈顶指针指向下标0,栈顶指针所指的是下一个元素要插入的位置,意思是栈顶指针的所指的下标还没有值呐~~

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧