C语言关于队列的问题:是关于求队列的长度的,问题很简单,为了大家方便看,我把所有代码都贴出来

2025-01-01 11:36:18
推荐回答(1个)
回答1:

这个链表队列是具备头节点功能,因此在链头那里不存放数据,从后面开始算
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;
}