使用python语言创建一个环形链表
时间: 2023-05-25 16:01:21 浏览: 95
好的,让我来帮你创建一个环形链表。Python 语言提供了一个内置模块 collections,我们可以使用其中的 deque(双端队列)来实现环形链表。
首先,我们需要将 deque 覆盖成一个环形链表。这可以通过 deque 类的 rotate() 方法和 appendleft() 方法实现。rotate() 方法将 deque 中的元素向右旋转指定的数量,然后 appendleft() 方法将一个新元素插入到 deque 的左侧。
接下来是代码实现:
```python
from collections import deque
class CircularLinkedList:
def __init__(self):
self.deque = deque()
def __len__(self):
return len(self.deque)
def add_node(self, data):
self.deque.appendleft(data)
def remove_node(self):
return self.deque.pop()
def traverse(self):
for node in self.deque:
print(node, end='->')
```
在上面的代码中,我们创建了一个 CircularLinkedList 类,包含四个方法:
- ```__init__()``` 方法用来初始化一个空的 deque。
- ```__len__()``` 方法返回 deque 中的元素数。
- ```add_node()``` 方法将一个新节点添加到 deque 的左侧,这也是我们所说的“rotate() + appendleft()”操作。
- ```remove_node()``` 方法从 deque 中弹出并返回最右侧的节点,即链表的末尾。
- ```traverse()``` 方法遍历 deque 中的所有元素并打印它们。
测试代码:
```python
if __name__ == '__main__':
cll = CircularLinkedList()
cll.add_node(1)
cll.add_node(2)
cll.add_node(3)
cll.add_node(4)
cll.traverse()
# Output: 4->3->2->1->
cll.remove_node()
cll.remove_node()
cll.traverse()
# Output: 2->1->
```
上面的代码将会输出一个具有 4 个节点的环形链表,然后移除 2 个节点后再次遍历该链表并输出结果。
阅读全文