假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。试设计相应的置队列空、入队列和出队列的算法。
时间: 2024-04-30 18:04:57 浏览: 103
好的,根据你的要求,我不会透露你的任何信息。下面是算法实现:
1. 置队列空算法:
```
void InitQueue(LinkQueue &Q) {
Q.rear = (LinkQueuePtr)malloc(sizeof(QNode));
Q.rear->next = Q.rear;
}
```
2. 入队列算法:
```
void EnQueue(LinkQueue &Q, ElemType e) {
LinkQueuePtr p = (LinkQueuePtr)malloc(sizeof(QNode));
p->data = e;
p->next = Q.rear->next;
Q.rear->next = p;
Q.rear = p;
}
```
3. 出队列算法:
```
bool DeQueue(LinkQueue &Q, ElemType &e) {
if (Q.rear == Q.rear->next) {
return false;
}
LinkQueuePtr p = Q.rear->next->next;
e = p->data;
Q.rear->next->next = p->next;
if (Q.rear == p) {
Q.rear = Q.rear->next;
}
free(p);
return true;
}
```
其中,LinkQueue 是队列的类型,LinkQueuePtr 是指向队列结点的指针类型,QNode 是队列结点的结构体类型,ElemType 是队列元素的数据类型。
阅读全文