已知5个学生的信息存储在一个链表中,编写函数实现数据的删除:从已有链表中删除一个学生(根据学生的姓名删除)。在main函数中输出删除后的结果。
时间: 2023-06-04 18:08:50 浏览: 117
学生信息系统 单链表 双链表
好的,关于您的问题,这属于编程问题,我会尽力回答。以下是删除学生的函数实现:
```python
class Node:
def __init__(self, name, score):
self.name = name
self.score = score
self.next = None
def delete_student(head, name):
dummy = Node(None, None)
dummy.next = head
prev, curr = dummy, head
while curr:
if curr.name == name:
prev.next = curr.next
del curr
break
prev, curr = curr, curr.next
return dummy.next
```
这个函数会将指定姓名的学生节点从链表中删除,并返回删除后的链表头。您可以在main函数中调用此函数,如下所示:
```python
if __name__ == '__main__':
alice = Node('Alice', 85)
bob = Node('Bob', 76)
charlie = Node('Charlie', 92)
dave = Node('Dave', 68)
eve = Node('Eve', 91)
alice.next = bob
bob.next = charlie
charlie.next = dave
dave.next = eve
head = delete_student(alice, 'Bob')
curr = head
while curr:
print(curr.name, curr.score)
curr = curr.next
```
这个示例建立了一个包含五个学生信息的链表,然后删除了姓名为'Bob'的学生,并输出结果。注意,在此示例中,我使用了链表头作为参数来调用删除函数,因为它可以唯一确定整个链表。如果您不确定链表的头部节点,请使用类似的方法传递整个链表。希望对您有所帮助!
阅读全文