1. (简答题,16.0分) 采用一个不带头结点、只有一个尾结点指针rear的循环单链表存储队列。(1)请写出结点类型为linknode的声明; (2)写出队空和队满的要素; (3)编写进队和出队基本算法。
时间: 2023-03-01 08:10:57 浏览: 90
1. (1) 结点类型为linknode的声明:
```
struct linknode
{
ElementType data;
linknode *next;
};
```
(2) 队空和队满的要素:
队空:rear指针为NULL
队满:需要考虑存储空间是否充足
(3) 进队和出队基本算法:
进队:
```
void EnQueue(ElementType x)
{
linknode *newnode = new linknode;
newnode->data = x;
if (rear == NULL)
{
newnode->next = newnode;
rear = newnode;
}
else
{
newnode->next = rear->next;
rear->next = newnode;
rear = newnode;
}
}
```
出队:
```
void DeQueue()
{
if (rear == NULL)
return;
else if (rear->next == rear)
{
delete rear;
rear = NULL;
}
else
{
linknode *temp = rear->next;
rear->next = temp->next;
delete temp;
}
}
```