今晚做的一道题,出队有点奇怪
/**
【题目】假设以带头结点的循环链表表示队列,并且
只设一个指针指向队尾元素结点(注意不设头指针),
试编写相应的队列初始化、入队列和出队列的算法。
带头结点循环链队列CLQueue的类型定义为:
typedef struct LQNode {
ElemType data;
struct LQNode next;
} LQNode, CLQueue;
**/
Status InitCLQueue(CLQueue &rear) // 初始化空队列
{
LQNode *p;
p=(LQNode*)malloc(sizeof(LQNode));
if(p==null)return ERROR;
p->next=p;
rear=p;
return OK;
}
Status EnCLQueue(CLQueue &rear, ElemType x) // 入队
{
LQNode *p;
p=(LQNode*)malloc(sizeof(LQNode));
if(p==null)return ERROR;
p->data=x;
p->next=rear->next;
rear->next=p;
rear=p;
return OK;
}
Status DeCLQueue(CLQueue &rear, ElemType &x) // 出队
{
if(rear==rear->next)return ERROR;
x=rear->next->next->data;
rear->next->next=rear->next->next->next;
return OK;
}