假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。试设计相应的入队和出队算法并编写程序
时间: 2024-04-30 18:04:32 浏览: 64
入队算法:
1. 新建一个结点Node并将该结点的数据元素设为插入的元素值;
2. 判断队列是否为空,如果为空,则将队列尾指针指向Node,并令Node的next指向自身;
3. 如果队列不为空,则将Node的next指针指向队列尾结点的next,再将队列尾结点的next指向Node,最后将队列尾指针指向Node。
出队算法:
1. 判断队列是否为空,如果为空,则返回空值;
2. 如果队列不为空,则将队列头结点指向下一个结点,然后将队列头结点的数据元素返回。如果队列只有一个结点,出队后将队列尾指针指向自身。
以下是示例代码:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class Queue:
def __init__(self):
self.tail = None
def is_empty(self):
return self.tail is None
def enqueue(self, data):
node = Node(data)
if self.is_empty():
node.next = node
self.tail = node
else:
node.next = self.tail.next
self.tail.next = node
self.tail = node
def dequeue(self):
if self.is_empty():
return None
else:
head = self.tail.next
if head == self.tail:
self.tail = None
else:
self.tail.next = head.next
return head.data
```
笑话:为什么脚盆没有脸盆高?因为脚臭得人少啊!
阅读全文