社区
C语言
帖子详情
数组 问题
_SNIPER_
2010-03-26 07:00:47
(1)假设用一个长度为50 的数组(数组元素的下标从0 到49 )作为栈的存储空间,栈底指针bottom 指
向栈底元素,栈顶指针top 指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有多少个
个元素?
这个题答案给的是19. 为什么不是20呀 希望大虾们帮忙解释一下 谢谢拉
...全文
270
14
打赏
收藏
数组 问题
(1)假设用一个长度为50 的数组(数组元素的下标从0 到49 )作为栈的存储空间,栈底指针bottom 指 向栈底元素,栈顶指针top 指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有多少个 个元素? 这个题答案给的是19. 为什么不是20呀 希望大虾们帮忙解释一下 谢谢拉
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
数组
的中间位置,如果
数组
长度是奇数,则将最大元素放到中间位置,如果
数组
长度是偶数,则将最大元素放到中间偏右的位置,然后将剩下的...
【算法导论】分治策略求最大子
数组
问题
分析、伪代码及C代码实现
最大子
数组
问题
分析 寻找A的和最大的非空连续子
数组
,我们称这样的连续子
数组
为最大子
数组
。如下所示,A[1..16]的最大子
数组
为A[8..11],其和为43,是A的所有子
数组
中和最大的。 注意: 只有当
数组
中包含负数时,...
最大子
数组
问题
(动态规划)
最大子
数组
问题
可以通过动态规划将时间复杂度做到O(N),也是之前的算法导论4.1-5
问题
动态规划
问题
上文的分治思想,实际上是根据
问题
性质将其分解为小规模
问题
,之后逐步求解小
问题
得出结果,再利用这些结果得出原...
算法复习——分而治之篇之最大子
数组
问题
算法复习——分而治之篇之最大子
数组
问题
以下内容主要参考中国大学MOOC《算法设计与分析》,墙裂推荐希望入门算法的童鞋学习! 1.
问题
背景 子
数组
:
数组
中连续的一段序列,例如X[3..7]X[3..7]X[3..7]; 子
数组
...
算法基础——动态规划之最大子
数组
问题
在分治算法中,已经学习过最大子
数组
问题
。使用分治的方法:将大
数组
arr分为两个小
数组
arr_left和arr_right,则求解arr的最大子
数组
和等价于: 在arr_left的最大子
数组
和、arr_right的最大子
数组
和、跨中点的最大子...
C语言
70,037
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章