构建单向链表

题目描述

构建一个单向链表,链表中包含一组整数数据。输出链表中的所有元素。

要求:

  1. 使用自定义的链表数据结构
  2. 提供一个 linkedList 类来管理链表,包含构建链表和输出链表元素的方法
  3. 在 main 函数中,创建一个包含一组整数数据的链表,然后调用链表的输出方法将所有元素打印出来

输入描述

包含多组测试数据,输入直到文件尾结束。

每组的第一行包含一个整数 n,表示需要构建的链表的长度。

接下来一行包含 n 个整数,表示链表中的元素。

输出描述

每组测试数据输出占一行。
按照顺序打印出链表中的元素,每个元素后面跟一个空格。

输入示例

1
2
3
4
5
1 2 3 4 5
6
3 4 5 6 7 8

输出示例

1
2
1 2 3 4 5
3 4 5 6 7 8

提示信息

数据范围:

1 <= n <= 1000;

代码注释

程序结构:

1、链表节点类-存储数据内容和指向下一个节点的指针

2、链表类-管理整个链表,包含插入打印功能

3.、主程序-接受输入,创建链表并操作链表节点类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 链表节点类
class Node:
def __init__(self, data):
self.data = data # 存储数据
self.next = None # 指向下一个节点的指针(初始为空)
# 链表类
class LinkList:
def __init__(self):
self.head_node = None # 链表头指针
self.length = 0 # 链表长度
# 尾部插入链表节点
def insert(self, data):
self.length += 1
new_node = Node(data)
if self.head_node is None: # 如果是空链表
self.head_node = new_node
return self.head_node

current_node = self.head_node
while current_node.next is not None: # 找到最后一个节点
current_node = current_node.next

current_node.next = new_node # 将新节点连接到链表尾部
return new_node
# 打印链表节点
def print_link_list(self):
current_node = self.head_node
while current_node is not None:
# 如果当前节点的下一个节点不是None, 说明没有到最后一个节点,输出空格
if current_node.next is not None:
print(current_node.data, end=' ')
else: # 否则,只输出对应的链表节点值
print(current_node.data)
current_node = current_node.next

while True:
try:
n = int(input()) # 接收 n 的输入,表示链表的长度
elements = list(map(int, input().split())) # 接收链表中的元素
except:
break

link_list = LinkList() # 新建链表

for data in elements:
link_list.insert(data) # 将数据插入到链表节点中

link_list.print_link_list() # 打印链表数据

举个例子

假设我们要定义一个表示汽车的类,每辆汽车有品牌(brand)和速度(speed)这两个属性,并且有一个加速(accelerate)方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Car:
# __init__方法:初始化对象的属性
def __init__(self, brand, initial_speed):
# 初始化"brand"属性(品牌)
self.brand = brand
# 初始化"speed"属性(速度)
self.speed = initial_speed

# 加速方法:修改速度(公共属性)
def accelerate(self, increment):
self.speed += increment

# 创建Car类的实例(初始化一辆车)
my_car = Car("Tesla", 0) # 品牌是Tesla,初始速度是0

# 访问属性
print(f"品牌: {my_car.brand}") # 输出: 品牌: Tesla
print(f"当前速度: {my_car.speed}") # 输出: 当前速度: 0

# 调用方法修改速度
my_car.accelerate(30)
print(f"加速后的速度: {my_car.speed}") # 输出: 加速后的速度: 30

运行结果:
D:\python.exe F:\Pycharm\4.07Linklist.py
品牌: Tesla
当前速度: 0
加速后的速度: 30