数据结构如果一个循环单链表示队列(循环队列),编写程序实现循环队列的插入和删除

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:26:05
该队列只设一个尾指针rear,不设头指针,
它是个循环的链队列,

循环单链中尾指针执行一个命令:rear=rear->next; 不就成头指针了~
插入:
InserterList_Dul(DuLNode *l,Datatype *p,Datatype e)/*将E元素插入到循环单链表L中的P指针所指的元素前面*/
{
s=(struct DuLNode *)malloc(sizeof(sturct DuLNode));/*申请一个节点,让指针S指向它*/
s->data=e; /*将S送入新节点*/
s->next=p;/*使新节点的后继指针指向P*/
s->prior=p->prior;/*使新节点的前驱指针指向P的前驱指针*/
p->prior->next=s;/*使P的前驱节点的后继指针指向新节点*/
p->prior=s;/*使P的前驱指针指向新节点*/
}
删除:
DeleteList_Dul(DulNOde *l,DuLnode *p) /*删除循环单链表L中P指针所指的元素*/
{
p->prior->next=p->next;/*使P的前驱节点的后继指针指向P的后继节点*/
p->next->prior=p->prior;/*使P的后继节点的前向指针指向P的前驱节点*/
free(p);/*释放P所指被删除的节点*/
}