单链表实现数学生管理系统 python
时间: 2023-05-25 18:01:12 浏览: 38
好的,让我来帮助你解答这个问题。
首先,我们需要定义一个节点类,用于表示单链表中的每个节点。代码如下:
```
class Node:
def __init__(self, data):
self.data = data
self.next = None
```
然后,我们需要定义一个链表类,用于管理节点。代码如下:
```
class LinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next is not None:
current = current.next
current.next = new_node
def remove_node(self, data):
current = self.head
previous = None
while current is not None:
if current.data == data:
if previous is not None:
previous.next = current.next
else:
self.head = current.next
return
previous = current
current = current.next
def display(self):
current = self.head
while current is not None:
print(current.data)
current = current.next
```
现在,我们可以使用这个链表类来实现一个简单的学生管理系统。代码如下:
```
class Student:
def __init__(self, name, id, grade):
self.name = name
self.id = id
self.grade = grade
def __str__(self):
return "Name: {}\nID: {}\nGrade: {}".format(self.name, self.id, self.grade)
class StudentManagementSystem:
def __init__(self):
self.student_list = LinkedList()
def add_student(self, name, id, grade):
student = Student(name, id, grade)
self.student_list.add_node(student)
def remove_student(self, id):
current = self.student_list.head
while current is not None:
if current.data.id == id:
self.student_list.remove_node(current.data)
return
current = current.next
def display_students(self):
self.student_list.display()
```
我们可以使用 `add_student` 方法来添加学生信息,使用 `remove_student` 方法来删除学生信息,使用 `display_students` 方法来显示所有学生信息。例如:
```
sms = StudentManagementSystem()
sms.add_student("Alice", 1001, 90)
sms.add_student("Bob", 1002, 85)
sms.add_student("Charlie", 1003, 92)
sms.display_students()
sms.remove_student(1002)
sms.display_students()
```
输出结果如下:
```
Name: Alice
ID: 1001
Grade: 90
Name: Bob
ID: 1002
Grade: 85
Name: Charlie
ID: 1003
Grade: 92
Name: Alice
ID: 1001
Grade: 90
Name: Charlie
ID: 1003
Grade: 92
```
这就是用单链表实现一个简单的数学生管理系统的基本思路。