如果有朋友对队列的两个结构体还搞不太清楚,可以这样理解:Queue结构体中的head指针相当于链表中的头指针,它的使用方式和链表中的头指针完全相同.然后在此基础上,只是多一个tail指针记录尾,多一个整型记录队列长度...回忆我们在链表部分对链表的初始化仅仅是将头指针置为NULL.而到了链队列这里,我们还多出两个需要处理的变量,一个是尾指针tail,一个是链队列长度size....链队列在入队时思路如下:
开辟新结点
判断队列是否为空队列
为空则将新结点"头插"进队列
不为空则将新结点"尾插"进队列
综上,该部分代码如下:
void QueuePush(Que* pq, QDatatype...链队列在出队思路如下:
判断队列是否为空队列
如果是,抛出异常终止程序
如果不是,则判断队列中是否仅剩一个结点
如果只剩一个结点,释放该结点,然后将head和tail置为空
如果不是只剩一个结点,那么使用一个指针记录下当前队头的下一个结点的位置...如果队列不为空,则size不等于0,则pq->size==0表达式为假,函数返回false.
综上,该部分代码如下:
bool QueueEmpty(Que* pq)//判空!为空返回真!