标题:分享:通用栈(如果你有任何疑问或建议,请提出)
只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 8楼 renkejun1942


就是这样~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 20:24
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 11楼 九转星河
unsigned 你自己把它删掉,改成int就行了。

void *改成 char *

看来VC甚至不完全支持C89

如果我没记错的话,void指针是C89标准。

[此贴子已经被作者于2017-5-18 20:27编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-18 20:26
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 12楼 renkejun1942
我曾经试过改成int*不过运行有时会出错~而char*却没有问题~我猜做地址相减运算计算偏移量时char*能够访问任何一个字节而int*不能吧~改了就没问题了~接着看看主体代码~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 20:33
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
void * 的问题,是我的编译器的问题,我的编译器对这个类型做出了扩展。

我修改一下代码。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-18 20:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 14楼 renkejun1942
看了一下代码~原来不同栈之间是用数组关联的~有时间可以对这个结构的性能评估一下~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 21:17
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:50 
学习了
2017-05-19 09:14
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
@renkejun1942突然想到了一个问题~那就是如果多个栈其中我要删除其中一个则那个空间岂不是空着么?~

因为栈与栈的链接是采取数组形式~所以如果要删除则要把后面的栈底指针向前移动一个单位~~这多个栈之间再用链表链接不行么……或者不同栈之间本来就是独立的~不清楚用数组关联栈来干什么……总之多个栈要删除其中一个那个位置就空着了……

[此贴子已经被作者于2017-5-20 23:57编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-20 23:49
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 17楼 九转星河
如果一个栈被销毁,那么那个位置的确处于‘空’的状态。
如果再一次申请建立栈,那个‘空’着的位置就会被再次分配出去。

用数组的基本目的是为了好看,多个不同的栈整整齐齐的排列在哪里。

另外,隐藏细节。

[此贴子已经被作者于2017-5-21 05:57编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-21 05:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 18楼 renkejun1942
这样看上去这样问题也不大~顶多就是空了一个空间~至于说的隐藏细节是什么~看来还得慢慢看才行~不过有一个提议~就是删除栈后寻找新栈的时候记录第一个空栈的下标~利用要寻找栈之前把该栈的栈底指针指向第一个空栈这样能提高后续搜索利用效率~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-21 08:23
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 19楼 九转星河
10 或20个元素的遍历好快的。

隐藏细节这点,你查一下封装,就清楚了。似乎你只是单纯的知道封装,却不知道为什么要封装。

[此贴子已经被作者于2017-5-21 08:36编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-21 08:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477108-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.365135 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved