順序佇列的操作
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef int ElemType;
/*鏈式佇列的節點*/
typedef struct LinkNode{
/*資料域*/
ElemType data;
/*指標域,指向下一個節點*/
struct LinkNode * next;
} LinkNode;
/*鏈式佇列*/
typedef struct {
/*佇列的隊頭指標*/
LinkNode *font;
/*佇列的隊尾指標*/
LinkNode *rear;
} LinkQueue;
/*初始化鏈式佇列*/
void InitQueue(LinkQueue *Q){
/*申請頭結點*/
Q->font=Q->rear=(LinkNode*) malloc(sizeof (LinkNode));
Q->font->next=NULL;
}
/*判斷鏈式佇列是否為空*/
bool isEmpty(LinkQueue Q){
return Q.font==Q.rear;
}
/*入隊*/
void ENQueue(LinkQueue *Q,ElemType X){
/*申請新的節點*/
LinkNode *s=(LinkNode*) malloc(sizeof (LinkNode));
s->data=X;
s->next=NULL;
/*插入隊尾*/
Q->rear->next=s;
/*更新rear*/
Q->rear=s;
}
/*出隊*/
bool DeQueue(LinkQueue *Q,ElemType *x){
/*空隊,出隊失敗*/
if(Q->font==Q->rear){
return false;
}
/*隊首結點*/
LinkNode *p=Q->font->next;
*x=p->data;
/*從連結串列上摘下結點*/
Q->font->next=p->next;
if(Q->rear==p){
/*連結串列上只有p這一個結點*/
Q->rear=Q->font;
}
/*釋放結點*/
free(p);
return true;
}
int main() {
printf("@@@@");
return 0;
}