|
主题 : : 循环队列如何判空判满? [已解决] |
回复[ 14次 ]
点击[ 1445次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2007-12-11 14:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
循环队列有着首尾指针,但是随着入队和出队就变化了,怎么才能判断空满呢? | | |
|
|
|
|
[第1楼]
[ 回复时间:2007-12-11 15:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
可以保持设置一个头节点,这个结点不存放数据,主要用来判断头尾指针的位置关系,从而达到判断空满的作用。如次一来,当head==tail的时候,队列为空;当tail++ == head的时候,就是队列满了。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2007-12-11 16:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:22
信誉值:0
注册日期:2007-09-24 10:42 |
|
|
|
|
|
[第3楼]
[ 回复时间:2007-12-12 11:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
那就是说申请50个空间,只能利用49个空间了,浪费了一个。如果这个队列中存放的是一个结构体,会不会浪费有些大,还有其它的办法吗?
谢谢 | | |
|
|
|
|
[第4楼]
[ 回复时间:2007-12-14 10:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2007-06-26 11:52 |
增加一个长度变量,标记当前的单位空间个数,与最大空间个数比较来判断空满。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2007-12-14 10:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2007-06-26 11:52 |
增加一个长度变量,标记当前的有效单位数据个数,与最大空间个数比较来判断空满。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2007-12-14 10:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
楼上的意见存在局限性,如果你存放的数据个数超过了你的长度变量能表示的最大值了呢? | | |
|
|
|
|
[第7楼]
[ 回复时间:2007-12-16 10:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
书上还有一个定义一个标志的方法,也没有浪费空间,我觉得还不错。
不过听说缓冲区就用的“一个空间”判断这个方法,不知道为什么明明知道浪费一个空间还用这个方法? | | |
|
|
|
|
[第8楼]
[ 回复时间:2007-12-18 17:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:19
信誉值:0
注册日期:2007-07-05 17:25 |
1楼判断满应该是((tail + 1) % 队列的最大长度) == head | | |
|
|
|
|
[第9楼]
[ 回复时间:2007-12-20 10:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
可能是原来计算机很珍贵的时候才会在乎这一个空间,现在定义一个变量都四个字节了,也没什么浪费的,只要能判断队列的空满就好了,谢谢大家的回答。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2007-12-25 13:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2007-12-25 13:06 |
和顺序表一样增加一个长度变量,就不用使用头尾指针来判断空满了~ | | |
|
|
|
|
[第11楼]
[ 回复时间:2008-01-02 14:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
跳出了头尾指针的使用,用了参数长度,确实不存在判别两个指针相等的情况了~ | | |
|
|
|
|
[第12楼]
[ 回复时间:2008-02-03 01:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:8
注册日期:2008-01-12 10:11 |
队尾指针加1取队列长度的MOD等于队头指针的时候队满 | | |
|
|
|
|
[第13楼]
[ 回复时间:2008-03-15 17:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2007-08-22 13:44 |
同意第二楼的看法,实际上它可以用数据结构的“栈和队列”来处理。 | | |
|
|
|
|
[第14楼]
[ 回复时间:2008-03-28 09:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
此贴由 贴主 于 [ 2008-03-28 09:24 ] 结贴。 结贴原因:问题已解决 | | |