假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点,试编写相应的队列初始化,入队列和出队列算法
时间: 2024-04-21 21:07:21 浏览: 96
只有尾结点的链表表示的队列算法
队列初始化:
```C++
void InitQueue(LinkList &rear)
{
rear = (LinkList)malloc(sizeof(LNode));
rear->next = rear; // 队列为空,队尾指向自己
}
```
入队列:
```C++
void EnQueue(LinkList &rear, ElemType x)
{
LinkList p = (LinkList)malloc(sizeof(LNode));
p->data = x;
p->next = rear->next;
rear->next = p;
rear = p; // 修改队尾指针
}
```
出队列:
```C++
bool DeQueue(LinkList &rear, ElemType &x)
{
if (rear == rear->next) // 队列为空
return false;
LinkList p = rear->next->next; // p指向队首元素结点
x = p->data;
if (p == rear) // 队列中只有一个元素
rear = rear->next;
rear->next = p->next; // 删除p结点
free(p);
return true;
}
```
阅读全文