社区
C语言
帖子详情
数组 问题
_SNIPER_
2010-03-26 07:00:47
(1)假设用一个长度为50 的数组(数组元素的下标从0 到49 )作为栈的存储空间,栈底指针bottom 指
向栈底元素,栈顶指针top 指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有多少个
个元素?
这个题答案给的是19. 为什么不是20呀 希望大虾们帮忙解释一下 谢谢拉
...全文
263
14
打赏
收藏
数组 问题
(1)假设用一个长度为50 的数组(数组元素的下标从0 到49 )作为栈的存储空间,栈底指针bottom 指 向栈底元素,栈顶指针top 指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有多少个 个元素? 这个题答案给的是19. 为什么不是20呀 希望大虾们帮忙解释一下 谢谢拉
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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,栈顶指针所指的是下一个元素要插入的位置,意思是栈顶指针的所指的下标还没有值呐~~
华为上机考试题库
在这个
问题
中,我们需要编写一个函数来将
数组
元素排序,并将最大元素放到output
数组
的中间位置,如果
数组
长度是奇数,则将最大元素放到中间位置,如果
数组
长度是偶数,则将最大元素放到中间偏右的位置,然后将剩下的...
什么是最大子
数组
问题
?
最大子
数组
问题
描述如下:假如我们有一个
数组
,
数组
中的元素有正数和负数,如何在
数组
中找到一段连续的子
数组
,使得子
数组
各个元素之和最大。最大子
数组
问题
在生活中有很多实际情况可以与其对应,比如说我们观察某一...
算法基础——动态规划之最大子
数组
问题
在分治算法中,已经学习过最大子
数组
问题
。使用分治的方法:将大
数组
arr分为两个小
数组
arr_left和arr_right,则求解arr的最大子
数组
和等价于: 在arr_left的最大子
数组
和、arr_right的最大子
数组
和、跨中点的最大子...
最大子
数组
问题
在leetcode上看到的求最大子
数组
问题
,在算法导论上分治策略章节中也有相同的
问题
,在这里介绍两种算法。 第一种,用分治法的思想去求解,先将
数组
对半分,那么,最大子
数组
的位置有三种情况,1.子
数组
全部在中点的...
最大子
数组
问题
—— 时间复杂度=0(n)分析
最大子
数组
问题
—— 时间复杂度=0(n)什么是最大子
数组
?O(n)复杂度算法分析 什么是最大子
数组
? 最大子
数组
就是连续的若干
数组
元素,如果其和是最大的,那么这个子
数组
就称为该
数组
的最大子
数组
。最大子
数组
是很...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章