定义一个包含学生信息(学号,成绩)的链表,使其具有如下功能: (1) 逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 对数据表进行插入操作; (4) 对数据表进行删除操作。
时间: 2024-04-29 08:24:01 浏览: 26
以下是Python实现:
```python
# 定义学生类
class Student:
def __init__(self, id, score):
self.id = id
self.score = score
# 定义链表节点类
class Node:
def __init__(self, student):
self.student = student
self.next = None
# 定义链表类
class StudentList:
def __init__(self):
self.head = None
# 逐个输入学生信息
def input_students(self):
n = int(input("请输入学生个数:"))
for i in range(n):
id = input("请输入学号:")
score = float(input("请输入成绩:"))
student = Student(id, score)
node = Node(student)
if self.head == None:
self.head = node
else:
p = self.head
while p.next != None:
p = p.next
p.next = node
# 逐个显示学生表中所有学生的相关信息
def show_students(self):
print("学号\t成绩")
p = self.head
while p != None:
print(p.student.id, "\t", p.student.score)
p = p.next
# 对数据表进行插入操作
def insert_student(self):
id = input("请输入学号:")
score = float(input("请输入成绩:"))
student = Student(id, score)
node = Node(student)
if self.head == None:
self.head = node
else:
p = self.head
while p.next != None and p.next.student.id < id:
p = p.next
if p.next == None:
p.next = node
elif p.next.student.id == id:
print("该学生已存在")
else:
node.next = p.next
p.next = node
# 对数据表进行删除操作
def delete_student(self):
id = input("请输入要删除的学生的学号:")
if self.head == None:
print("链表为空")
elif self.head.student.id == id:
self.head = self.head.next
else:
p = self.head
while p.next != None and p.next.student.id != id:
p = p.next
if p.next == None:
print("该学生不存在")
else:
p.next = p.next.next
print("删除成功")
# 测试
list = StudentList()
list.input_students()
list.show_students()
list.insert_student()
list.show_students()
list.delete_student()
list.show_students()
```
示例输入:
```
请输入学生个数:3
请输入学号:001
请输入成绩:80
请输入学号:002
请输入成绩:90
请输入学号:003
请输入成绩:70
请输入学号:004
请输入成绩:85
请输入要删除的学生的学号:002
```
示例输出:
```
学号 成绩
001 80.0
002 90.0
003 70.0
请输入学号:002
请输入成绩:85
学号 成绩
001 80.0
002 90.0
003 70.0
004 85.0
请输入要删除的学生的学号:002
删除成功
学号 成绩
001 80.0
003 70.0
004 85.0
```
阅读全文