队列的链式存储结构
1、 队列的链式存储结构:头指针指向队头结点,尾指针指向队尾结点
描述代码:
Typedef struct{ //链式队列结点
ElemType data;
Struct LinkNode *next;
}LinkNode;
Typrdef struct{
LinkNode *front,*rear;
}LinkQueue;
当Q.frontNULL且Q.rearNULL时,链式队列为空。
链式队列基本操作
1、 初始化
Void InitQueue(LinkQueue &Q){
Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));//建立头结点
Q.front->next=NULL;//初始为空
}
2、 判队空
Bool IsEmpty(LinkQueue Q){
If(Q.front==Q.rear) return true;
else return false;
}
3、 入队
Void EnQueue(LinkQueue &Q,ElemType x){
S=(LinkNode*)malloc(sizeof(LinkNode));
s->data=x;s->next=NULL; //创建新节点,插入链尾
Q.rear->next=s;
Q.rear=s;
}
4、 出队
Bool DeQueue(LinkQueue &Q,ElemType &x){
If(Q.frontQ.rear) return false;//空队
P=Q.front->next;
x=p->data;
if(Q.rearp) Q.rear=Q.front;
free§;
return true;
}
双队列