概念
循环链表写循环队列,只用一个队尾指针就够了,因为循环链表中队尾节点的下一个节点就是队首节点。
队空条件:
队满条件:不考虑
进队操作:将新的节点插入到队尾,称为队尾节点,然后队尾指针指向这个新的节点。
出队操作:将队尾节点的下一个节点数据取出,并绕过该节点。
代码
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define ERROR 0
#define OK 1
typedef int status;
#define ElemeType_LQu int //链式栈数据类型
typedef struct qNode {
ElemeType_LQu data;
struct qNode* next;
}QuNode, * LQueue;
typedef struct
{
LQueue front;//队首节点指针
LQueue rear;//队尾节点指针
}LiQueue,*liqueue;
/*******************链式循环队列(只用尾节点指针)******************/
void InitQueue_lk_cir(liqueue& qu) //其实不用传递qu,只需要传递一个rear指针就行了,我这里懒得重新定义了,就用了之前的定义。
{
qu = (liqueue)malloc(sizeof(LiQueue));//一般只需要传递个指针就行了,不用