知识大全 链队列

Posted 结点

篇首语:少年恃险若平地,独倚长剑凌清秋。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 链队列相关的知识,希望对你有一定的参考价值。

链队列

链队列的定义   队列的链式存储结构简称为链队列 它是限制仅在表头删除和表尾插入的单链表

链队列的结构类型说明

 注意   增加指向链表上的最后一个结点的尾指针 便于在表尾做插入操作   链队列示意图见上图 图中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)       //将元素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 underflow );//下溢             p=Q >front;                   //指向对头结点             x=p >data;                    //保存对头结点的数据             Q >front=p >next;             //将对头结点从链上摘下             if(Q >rear==p)//原队中只有一个结点 删去后队列变空 此时队头指针已为空                  Q >rear=NULL;             free(p);   //释放被删队头结点             return x;  //返回原队头数据      

cha138/Article/program/sjjg/201311/22680

相关参考