队列的链式存储结构 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; }
双队列