/* 無頭節點只尾節點指針的鏈隊 */
typedef struct DNode{
ElemType data;
struct DNode *rear;
struct DNode *next;
} Linklist;
void initQueue(LinkList *&rear){
rear=NULL;
}
bool queueEmpty(LinkList *rear){
return(rear==NULL);
}
//進隊
void enQueue(LinkList *&rear,ElemType x){
LinkList *p;
p=(LinkList *)malloc(sizeof(LinkList));
p->data=x;
if(rear==NULL){
p->next=p;
rear=p;
}
else{
p->next=rear->next;
rear->next=p;
rear=p;
}
}
//出隊
bool deQueue(LinkList *&rear,ElemType &x){
LinkList *q;
if(rear==NULL){
return false;
}
else if(rear->next==rear){
x=rear->data;
free(rear);
rear=NULL;
}
else{
q=rear->next;
x=q->data;
rear->next=q->next;
free(q);
}
return true;
}