队列长度不能小于2
如果像下面这样判断空和满...
const int len = 10;
int queue[len], head = 0, tail = 0;
inline bool isfull ()
{
return (tail+1)%len == head;
}
inline bool isempty ()
{
return head == tail;
}
int queue[len], head = 0, tail = 0;
inline bool isfull ()
{
return (tail+1)%len == head;
}
inline bool isempty ()
{
return head == tail;
}
毛病出在tail上,因为tail的当前位置是不能有任何元素的,必须要多占一个空地才能把空和满区别开. 所以如果队列空间为len的话,最多放len-1个元素,这就是队长不能为1的原因了.
还有我觉得队列是个很让人尴尬的东西,像上面那样把队列做成全局变量是不是很难受啊.我总想把它封装起来,但仅仅为了编一个小程序就让定义队列的代码占了一半,更难受了. 看来用stl的队列是最好的选择了.