用pycharm 编写一个结点类、单链表类,并实现单链表的基本操作(首端插入、删除结点;尾端插入删除结点;插入、删除指定位置(位置i,从0开始)结点),并在主程序中验证这些函数。 提交源文件和运行结果截图。
时间: 2024-09-19 17:12:58 浏览: 36
在PyCharm中编写节点类和单链表类通常会包含以下几个步骤:
首先,我们创建一个Node类表示链表中的每个节点:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
```
在这个类中,`data` 存储节点的数据,`next` 指向下一个节点。
接着,我们需要创建一个LinkedList类,该类包含链表的一些基本操作方法:
```python
class LinkedList:
def __init__(self):
self.head = None
# 首端插入节点
def insert_at_start(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
# 删除首端节点
def delete_from_start(self):
if self.head is not None:
self.head = self.head.next
# 尾端插入节点
def append(self, data):
if not self.head:
self.head = Node(data)
else:
current = self.head
while current.next:
current = current.next
current.next = Node(data)
# 删除尾端节点
def delete_from_end(self):
if self.head and self.head.next is None:
self.head = None
else:
current = self.head
while current.next.next:
current = current.next
current.next = None
# 插入节点于指定位置(假设位置从0开始)
def insert_at_index(self, index, data):
if index < 0 or index > self.size():
raise IndexError("Index out of range")
if index == 0:
self.insert_at_start(data)
else:
new_node = Node(data)
current = self.head
for _ in range(index - 1):
current = current.next
new_node.next = current.next
current.next = new_node
# 删除指定位置的节点
def delete_at_index(self, index):
if index < 0 or index >= self.size():
raise IndexError("Index out of range")
if index == 0:
self.delete_from_start()
else:
current = self.head
for _ in range(index):
current = current.next
temp = current.next
current.next = temp.next
# 计算链表大小
def size(self):
count = 0
current = self.head
while current:
count += 1
current = current.next
return count
```
在主程序中,你可以创建一个LinkedList实例并测试上述方法:
```python
def main():
linked_list = LinkedList()
linked_list.append(1) # 添加一些节点
print(f"Size before operations: {linked_list.size()}")
linked_list.insert_at_start(0) # 首端插入
linked_list.delete_from_start() # 删除首端
linked_list.insert_at_index(1, 2) # 指定位置插入
linked_list.delete_at_index(1) # 删除指定位置
print(f"Size after operations: {linked_list.size()}")
if __name__ == "__main__":
main()
```
为了展示完整的源文件以及运行结果,你需要在PyCharm中创建一个新的Python项目,将上述代码复制到相应文件,然后运行主函数。由于这里无法直接展示代码执行的结果,你需要自己在本地环境执行并截图展示链表的操作前后状态。
阅读全文