设计一个带头结点的单链表python
时间: 2024-05-02 14:23:39 浏览: 88
带头结点的单链表创建
实现:
首先,我们需要定义一个节点类,包含两个属性:该节点的值(data)和下一个节点(next_node)。例如:
```
class Node:
def __init__(self, data):
self.data = data
self.next_node = None
```
然后,我们定义一个链表类,包含一个头节点(head)以及一些链表的操作方法。例如:
```
class LinkedList:
def __init__(self):
self.head = Node(None)
def is_empty(self):
return self.head.next_node is None
def append(self, data):
new_node = Node(data)
cur = self.head
while cur.next_node:
cur = cur.next_node
cur.next_node = new_node
def insert(self, index, data):
new_node = Node(data)
cur = self.head
for i in range(index):
if cur.next_node is None:
raise Exception("Index out of range.")
cur = cur.next_node
new_node.next_node = cur.next_node
cur.next_node = new_node
def delete(self, data):
cur = self.head
while cur.next_node:
if cur.next_node.data == data:
cur.next_node = cur.next_node.next_node
return True
cur = cur.next_node
return False
def print_list(self):
cur = self.head
while cur.next_node:
cur = cur.next_node
print(cur.data)
```
这个链表有一个头节点,该节点不存储任何数据,只作为链表的起始点。 `is_empty` 方法判断链表是否为空。 `append` 方法向链表尾部添加节点。 `insert` 方法在给定索引处插入节点。 `delete` 方法根据节点数据值删除节点。 `print_list` 方法打印链表。
使用该链表类来构建一个带头结点的单链表:
```
linkedList = LinkedList()
linkedList.append(1)
linkedList.append(2)
linkedList.append(3)
linkedList.insert(2, 5)
linkedList.delete(2)
linkedList.print_list()
```
输出:
```
1
3
5
```
阅读全文