知识大全 链队列
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相关参考