设计一个完整的程序,根据用户输入学生的人数n(n>2)以及每个学生的学号、姓名和成绩建立一个单链表,统计单链表存储的学生人数,输出所有学生信息,删除指定位置的元素。
时间: 2024-06-12 15:06:29 浏览: 102
单链表进行学生信息管理
以下是Python语言的程序示例:
```python
# 定义学生类
class Student:
def __init__(self, id, name, score):
self.id = id
self.name = name
self.score = score
# 定义单链表节点类
class ListNode:
def __init__(self, data):
self.data = data
self.next = None
# 定义单链表类
class LinkedList:
def __init__(self):
self.head = None
self.length = 0
# 在链表末尾添加节点
def add(self, data):
node = ListNode(data)
if self.head is None:
self.head = node
else:
current = self.head
while current.next:
current = current.next
current.next = node
self.length += 1
# 统计链表中的节点数量
def count(self):
return self.length
# 输出链表中所有节点的数据
def print_all(self):
current = self.head
while current:
print("学号:{},姓名:{},成绩:{}".format(current.data.id, current.data.name, current.data.score))
current = current.next
# 删除指定位置的节点
def delete(self, index):
if index < 0 or index >= self.length:
print("删除位置不合法")
return
if index == 0:
self.head = self.head.next
else:
current = self.head
for i in range(index - 1):
current = current.next
current.next = current.next.next
self.length -= 1
# 主程序
if __name__ == '__main__':
# 输入学生人数
n = int(input("请输入学生人数:"))
while n < 3:
n = int(input("学生人数不能少于3人,请重新输入:"))
# 建立单链表
students = LinkedList()
for i in range(n):
id = input("请输入第{}个学生的学号:".format(i+1))
name = input("请输入第{}个学生的姓名:".format(i+1))
score = input("请输入第{}个学生的成绩:".format(i+1))
student = Student(id, name, score)
students.add(student)
# 统计链表中的学生人数并输出所有学生信息
print("学生人数为:", students.count())
students.print_all()
# 删除指定位置的学生信息
index = int(input("请输入要删除的学生位置(从0开始):"))
students.delete(index)
print("删除后学生人数为:", students.count())
students.print_all()
```
程序思路:
1. 定义学生类,包含学号、姓名和成绩三个属性。
2. 定义单链表节点类,包含一个数据属性和一个指向下一个节点的指针属性。
3. 定义单链表类,包含一个头节点属性和一个链表长度属性。具有添加节点、统计节点数量、输出所有节点数据和删除指定位置节点的功能。
4. 在主程序中,首先输入学生人数n,判断是否小于3人。然后循环n次,输入每个学生的学号、姓名和成绩,将其封装成一个学生对象,并添加到单链表中。
5. 统计单链表中学生人数并输出所有学生信息。
6. 输入要删除的学生位置,调用单链表的删除方法,删除指定位置的学生信息。
7. 统计删除后单链表中学生人数并输出所有学生信息。
阅读全文