顺序队列的操作
#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;
}