编写函数实现基本运算方法。基本运算方法应包括创建链表、销毁链表、求链表长度、 求链表某一位置节点的值、查找值为 x 的节点所在位置、新增节点、插入节点、删除节点。 节点各数据域与指针请自行定义。
时间: 2024-09-26 21:05:16 浏览: 7
在编写函数实现基本链表操作时,我们需要先定义一个节点结构,通常包含一个数据域和指向下一个节点的指针。下面是一个简单的Python示例,展示了如何实现这些功能:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
# 创建链表
def create_list(self, nodes=None):
if not nodes:
return
for i in range(len(nodes)):
if i == 0:
self.head = Node(nodes[i])
else:
new_node = Node(nodes[i])
current = self.head
while current.next:
current = current.next
current.next = new_node
# 销毁链表(这里仅简单地置空)
def destroy_list(self):
self.head = None
# 求链表长度
def length(self):
count = 0
current = self.head
while current:
count += 1
current = current.next
return count
# 查找值为x的节点位置
def find_position(self, value):
position = -1
current = self.head
for i in range(self.length()):
if current.data == value:
position = i
break
current = current.next
return position
# 新增节点
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
current = self.head
while current.next:
current = current.next
current.next = new_node
# 插入节点
def insert_at_position(self, position, data):
if position < 0 or position > self.length():
raise IndexError("Invalid position")
if position == 0:
new_node = Node(data)
new_node.next = self.head
self.head = new_node
else:
current = self.head
for _ in range(position - 1):
current = current.next
new_node = Node(data)
new_node.next = current.next
current.next = new_node
# 删除节点
def delete_value(self, value):
if not self.head:
return
if self.head.data == value:
self.head = self.head.next
return
prev = None
current = self.head
while current and current.data != value:
prev = current
current = current.next
if current is None:
return
prev.next = current.next
# 使用示例:
llist = LinkedList()
nodes = [1, 2, 3, 4, 5]
llist.create_list(nodes)
print("Length:", llist.length())
print("Find 3:", llist.find_position(3))
llist.append(6)
print("After appending 6:")
llist.insert_at_position(2, 7)
print("After inserting at position 2:")
llist.delete_value(4)
```