免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: baozhao
打印 上一主题 下一主题

[算法]严蔚敏的循环队列 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-03-31 18:06 |只看该作者
回复 10# nizvoo


    请注意,我不想把话题引开,在本主题我只想讨论严的想法是什么,很明显的一点是严书考虑的不是realloc本身的问题。

论坛徽章:
0
12 [报告]
发表于 2011-03-31 18:18 |只看该作者
"从上述分析可见,在C语言中不能用动态分配的一维数组来实现循环队列。如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度;若用户无法预估所用队列的最大长度,则宜采用链队列。"这句话在逻辑上有问题。动态分配或静态分配是数组空间的分配方式,与数组的大小无关,与是否知道队列的最大长度无关,与能否根据需要获取所需的空间在理论上也没有关系。
另外,句子中的“从上述分析可见”所指的“上述分析”也没有涉及数组的动态分配或静态分配,看不出怎么可以得出“在C语言中不能用动态分配的一维数组来实现循环队列”的结论。

论坛徽章:
0
13 [报告]
发表于 2011-03-31 21:46 |只看该作者
回复 12# yug1129

确实,严的这两段文字逻辑上不通,所以想看看大家的观点

论坛徽章:
0
14 [报告]
发表于 2011-04-01 10:06 |只看该作者
realloc会失败

那我自己malloc,copy,free总行了吧

实现循环队列,用一维数组当然可以,只不过不如使用链表来得自然,效率高而已

论坛徽章:
0
15 [报告]
发表于 2011-04-01 10:47 |只看该作者
一维数组 是数组。它的大小是在什么时候分配的?它存放在哪儿?这些弄不明白,严的那句话永远不会明白。

论坛徽章:
0
16 [报告]
发表于 2011-04-01 14:01 |只看该作者
队列是一种先进先出(first infirst out,缩写为FIFO)的线性表


用链表的时候FI的空间被自动追加到队列的尾部(所以称为循环),你用数组的时候怎么处理?数组是一个连续空间,你怎么把头上的几个离开队列的数组元素放到队尾循环利用啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP