怎么做网站管理,搜狗关键词排名查询,广西建设领域证书查询官方网站,医疗软件公司10强在一个循环链队中只有尾指针#xff08;记为rear#xff0c;结点结构为数据域data#xff0c;指针域next#xff09;#xff0c;请给出这种队列的入队和出队操作实现过程
入队过程如下图#xff1a; 先创一个结点#xff0c;用于存储要插入的结点数据 然后就是老套路了…在一个循环链队中只有尾指针记为rear结点结构为数据域data指针域next请给出这种队列的入队和出队操作实现过程
入队过程如下图 先创一个结点用于存储要插入的结点数据 然后就是老套路了先连后断
void EnQueue(LinkQueue* Q,int x){QueuePtr s(QueuePtr)malloc(sizeof(QNode));//malloc申请一个QNode结点大小的空间然后用指针s指向它s-datax;//把x值赋到结点里面if(Q-rearNULL){//队列为空,新加入的s结点成为唯一结点Q-rears;Q-rear-rearQ-rear;//唯一一个结点就自己指向自己形成一个环}else{s-nextQ-rear-next;//先连s的next指向rear的next也就是头结点Q-rear-nexts;//后断当前rear的next指向sQ-rears;//s成为新的rear}}出队过程如下图 void DeQueue(LinkQueue* Q){QueuePtr p;if(Q-rearNULL){//空队列没办法出队printf(队列为空无法出队);return;}if(Q-rear-nextQ-rear){//队列中只有一个元素pQ-rear;//用p记录rear位置再free掉free(p);Q-rearNULL;//最后rear置空}else{//队列还有一些元素pQ-rear-next;//通过rear找到头结点赋给pQ-rear-nextp-next;//rear连上头结点下一个结点free(p);//把p释放掉}
}