使用Python OOP编程模式,实现单向链表(无tail指针)。 借助big-o模块,测试单向链表push_front的时间复杂度,push_back的时间复杂度。 加入tail指针,测试push_
时间: 2024-10-21 07:13:50 浏览: 31
在Python中,我们可以使用面向对象编程(OOP)的方式来创建一个简单的单向链表,没有专门的`tail`指针。我们首先定义一个节点类`Node`和链表类`LinkedList`。链表类包含一个头节点`head`以及基本的操作方法如`push_front` (在头部添加元素) 和 `push_back` (在尾部添加元素)。
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def push_front(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def push_back(self, data):
if not self.head:
self.head = Node(data)
else:
current = self.head
while current.next:
current = current.next
current.next = Node(data)
# 测试时间复杂度
import timeit
setup = """
from linked_list import LinkedList
ll = LinkedList()
"""
time_push_front = timeit.timeit("ll.push_front(1)", setup=setup, number=10000)
time_push_back = timeit.timeit("ll.push_back(2)", setup=setup, number=10000)
print(f"push_front平均时间复杂度: {time_push_front / 10000:.6f}秒")
print(f"push_back平均时间复杂度: {time_push_back / 10000:.6f}秒")
# 如果要添加tail指针并测试
def _add_tail(self, data):
if not self.head:
self.head = Node(data)
else:
current = self.head
while current.next:
current = current.next
current.next = Node(data)
self.tail = current
LinkedList.push_back = _add_tail
```
阅读全文