用一个循环单链表表示队列,该队列只设一个队尾指针rear,不设队首指针。试编写算法,完成入队、出队操作。

admin2014-12-25  35

问题 用一个循环单链表表示队列,该队列只设一个队尾指针rear,不设队首指针。试编写算法,完成入队、出队操作。

选项

答案void Inqueue(lklistrear,dataType x) { S=malloc(sizeof(iklisk)); S一>data=x; if(rear==NULL) { rear=S; rear一>next=s: } else { S一>next=rear一>next; rear一>next=s; rear=s; } } voiddelqueue(iklistrear) { if(rear==NULL)error(”overflow”); else { S=rear一>next; if(S==rear) rear=NULL; else rear一>next=s一>next; free(S); } }

解析 按题意,该队列可以用下图表示。

由图可知,出队操作是在循环单链表的头部进行,相当于删除a1结点。而入队操作是在循环单链表的尾部进行,相当于在an后插入一个结点。
转载请注明原文地址:https://kaotiyun.com/show/kYVx777K
0

最新回复(0)