社区
C语言
帖子详情
数组 问题
_SNIPER_
2010-03-26 07:00:47
(1)假设用一个长度为50 的数组(数组元素的下标从0 到49 )作为栈的存储空间,栈底指针bottom 指
向栈底元素,栈顶指针top 指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有多少个
个元素?
这个题答案给的是19. 为什么不是20呀 希望大虾们帮忙解释一下 谢谢拉
...全文
272
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,栈顶指针所指的是下一个元素要插入的位置,意思是栈顶指针的所指的下标还没有值呐~~
华为上机考试题库
华为秋季校招时候的上机题库,把这些题都做会了,应该就没有
问题
了
【算法导论】分治策略求最大子
数组
问题
分析、伪代码及C代码实现
最大子
数组
问题
分析 寻找A的和最大的非空连续子
数组
,我们称这样的连续子
数组
为最大子
数组
。如下所示,A[1..16]的最大子
数组
为A[8..11],其和为43,是A的所有子
数组
中和最大的。 注意: 只有当
数组
中包含负数时,最大子
数组
问题
才有意义。如果所有
数组
元素都是非负数,子
数组
问题
没有任何难度,因为整个
数组
的和肯定最大。 使用分治策略的求解方法 我们要寻找子
数组
A[low..high]的最大子
数组
。使用分治技术意味着我们要将子
数组
划分为两个规模尽量相等的子
数组
...
最大子
数组
问题
(动态规划)
最大子
数组
问题
可以通过动态规划将时间复杂度做到O(N),也是之前的算法导论4.1-5
问题
动态规划
问题
上文的分治思想,实际上是根据
问题
性质将其分解为小规模
问题
,之后逐步求解小
问题
得出结果,再利用这些结果得出原
问题
的解。 动态规划实际上也是这种思想,当
问题
具备重叠子
问题
,最优子结构的性质时,往往可通过此法得出答案。 对于最大子
数组
问题
,采用dp
数组
解决 定义:dp[i] i 为
数组
索引,是为“状态”,dp[i]为以索引i为终点的
数组
的前i+1个值的最大子
数组
和 考虑dp[i] 与 dp[i-1]的关系,是否
算法复习——分而治之篇之最大子
数组
问题
算法复习——分而治之篇之最大子
数组
问题
以下内容主要参考中国大学MOOC《算法设计与分析》,墙裂推荐希望入门算法的童鞋学习! 1.
问题
背景 子
数组
:
数组
中连续的一段序列,例如X[3..7]X[3..7]X[3..7]; 子
数组
和:子
数组
中元素的求和,X[3..7]X[3..7]X[3..7]的和就是3+5−4+3+2=93+5-4+3+2=93+5−4+3+2=9; 那么,
问题
就是如何寻找
数组
XXX中最大的非空子
数组
? 2.
问题
定义 最大子
数组
问题
(Max Continuous Subarr
算法基础——动态规划之最大子
数组
问题
问题
描述 - 分而治之的解决方案 在分治算法中,已经学习过最大子
数组
问题
。使用分治的方法:将大
数组
arr分为两个小
数组
arr_left和arr_right,则求解arr的最大子
数组
和等价于: 在arr_left的最大子
数组
和、arr_right的最大子
数组
和、跨中点的最大子
数组
和中找一个最大的,即为arr的最大子
数组
和。 采用分治算法解决该
问题
,Golang实现在前面分治的博客里写过,其时间...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章