链队列

来源:互联网 发布:鲜卑利亚 知乎 编辑:程序博客网 时间:2024/05/22 00:05

链队列的实质就是只限制在表头做添加,表尾做删除的单链表

一 链队列示意图


注:增加指向链表的队尾指针,便于在表尾做插入操作;其中Q为LinkQueue型的指针。

二 链队列基本运算

 //置空队      void InitQueue(LinkQueue *Q)      {            Q->front=Q->rear=NULL;      }

 //判队空      intQueueEmpty(LinkQueue *Q)      {            return Q->front==NULL&&Q->rear==Null;            //实际上只须判断队头指针是否为空即可      }
//入队void EnQueue(LinkQueue *Q,DataType x){QueueNode *p = (QueueNode *)malloc(sizeof(QueueNode));//申请新节点p->data = x;p->next = NULL;if(QueueEmpty(Q))Q->front = Q->rear = p;//将x插入到空队列else{//x插入到非空队列的尾Q->rear->next = p;//*p链到原队尾节点后Q->rear = p;//队尾指针指向性的队尾}}
//出队DataType DeQueue(LinkQueue *Q){DataType x;QueueNode *p;if(QueueEmpty(Q))Error("Queue undefflow");//下溢p = Q->front;//指向对头结点x = p->data;//保存头结点的数据Q->front = p->next;//将对头从节点上摘下来if(Q->rear=p)//原队中只有一个节点,删去后队列变空此时的头指针已为空Q->rear = NULL;free(p);return x;}




0 0
原创粉丝点击