用python写链表的创建,打印,删除,添加
时间: 2023-05-29 17:04:12 浏览: 89
python 实现创建链表
链表是由节点组成的数据结构,每个节点包含一个数据项和一个指向下一个节点的指针。下面是Python实现链表的代码:
### 创建链表
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
# 创建新节点
new_node = Node(data)
# 如果链表为空,将新节点作为头节点
if self.head is None:
self.head = new_node
else:
# 遍历链表,找到最后一个节点
temp = self.head
while temp.next is not None:
temp = temp.next
# 将新节点添加到最后一个节点的后面
temp.next = new_node
def print_list(self):
# 遍历链表,打印每个节点的值
temp = self.head
while temp is not None:
print(temp.data, end=" ")
temp = temp.next
# 创建链表
list = LinkedList()
# 添加节点
list.add_node(1)
list.add_node(2)
list.add_node(3)
# 打印链表
list.print_list()
```
### 删除节点
```python
class LinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
# 创建新节点
new_node = Node(data)
# 如果链表为空,将新节点作为头节点
if self.head is None:
self.head = new_node
else:
# 遍历链表,找到最后一个节点
temp = self.head
while temp.next is not None:
temp = temp.next
# 将新节点添加到最后一个节点的后面
temp.next = new_node
def delete_node(self, data):
# 如果删除的是头节点
if self.head.data == data:
self.head = self.head.next
else:
# 遍历链表,找到要删除的节点的前一个节点
temp = self.head
while temp.next is not None:
if temp.next.data == data:
temp.next = temp.next.next
return
temp = temp.next
def print_list(self):
# 遍历链表,打印每个节点的值
temp = self.head
while temp is not None:
print(temp.data, end=" ")
temp = temp.next
# 创建链表
list = LinkedList()
# 添加节点
list.add_node(1)
list.add_node(2)
list.add_node(3)
# 删除节点
list.delete_node(2)
# 打印链表
list.print_list()
```
### 添加节点
```python
class LinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
# 创建新节点
new_node = Node(data)
# 如果链表为空,将新节点作为头节点
if self.head is None:
self.head = new_node
else:
# 遍历链表,找到最后一个节点
temp = self.head
while temp.next is not None:
temp = temp.next
# 将新节点添加到最后一个节点的后面
temp.next = new_node
def insert_node(self, data, index):
# 创建新节点
new_node = Node(data)
# 如果插入的是头节点
if index == 0:
new_node.next = self.head
self.head = new_node
else:
# 遍历链表,找到插入位置的前一个节点
temp = self.head
i = 0
while i < index - 1 and temp is not None:
temp = temp.next
i += 1
# 如果插入位置超出链表长度,直接将新节点添加到最后一个节点的后面
if temp is None:
self.add_node(data)
else:
new_node.next = temp.next
temp.next = new_node
def print_list(self):
# 遍历链表,打印每个节点的值
temp = self.head
while temp is not None:
print(temp.data, end=" ")
temp = temp.next
# 创建链表
list = LinkedList()
# 添加节点
list.add_node(1)
list.add_node(2)
list.add_node(3)
# 插入节点
list.insert_node(4, 1)
# 打印链表
list.print_list()
```
阅读全文