这个链表队列是具备头节点功能,因此在链头那里不存放数据,从后面开始算
int QueueLen(LinkQueue Q)//求队列的长度
{
int length=0;
//QnodePtr p=Q.front->next;//这是为什么是Q.front
//while(p!=NULL)//为什么这里是p!=Q.rear??? 不可以是p!=NULL?? //我的一个想法:QnodePtr p=Q.front->next; while(p!=NULL) 不知道为什么有错
//1、非循环队列判断空的依据,对头指针与对尾指针相等
//2、既然都调用DestroyQueue释放内存,后面对队列的操作没有任何意义。
//3、只要不调用DestroyQueue,你的算法也是可以实现长度计算的。
//但是一旦调用DestroyQueuefront=rear=NULL,因此front->next将指向不明地址,发生错误.
QnodePtr p=Q.front;
while(p!=Q.rear)
{
length++;
p=p->next;
}
return length;
}