数据结构算法题(假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针)试编写相应的队列初始化,入队列和出队列的算法
)(提供两种答案哦
)一://既然是算法就不用源码了具体看注释typedefintDatatype;typedefstructqueuenode{Datatypedata;structqueuenode*next;}QueueNode;//以上是结点类型的定义typedefstruct{queuenoderear;}LinkQueue;//只设一个指向队尾元素的指针voidInitQueue(LinkQueue&Q){//置空队:就是使头结点成为队尾元素Q
rear=(queuenode*)malloc(sizeof(queuenode))QueueNode*s;Q->rear=Q->rear->next;//将队尾指针指向头结点while(Q->rear
=Q->rear->next)//当队列非空,将队中元素逐个出队{s=Q->rear->next;Q->rear->next=s->next;free(s);}//回收结点空间}intEmptyQueue(LinkQueue&Q){//判队空//当头结点的next指针指向自己时为空队returnQ->rear->next->next==Q->rear->next;}voidEnQueue(LinkQueue&Q,Datatypex){//入队//也就是在尾结点处插入元素QueueNode*p=(QueueNode*)malloc(sizeof(QueueNode));//申请新结点p->data=x;p->next=Q->rear->next;//初始化新结点并链入Q-rear->next=p;Q->rear=p;//将尾指针移至新结点}DatatypeDeQueue(Li