建立一个链表,每个节点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的节点所包含的年龄等于此年龄,则将此节点删去。
时间: 2024-03-22 10:39:25 浏览: 48
好的,这个问题很适合用 Python 来实现。下面是代码实现:
```python
# 定义节点类
class Node:
def __init__(self, student_id, name, gender, age):
self.student_id = student_id
self.name = name
self.gender = gender
self.age = age
self.next = None
# 定义链表类
class LinkedList:
def __init__(self):
self.head = None
# 在链表尾部添加新节点
def add_node(self, student_id, name, gender, age):
new_node = Node(student_id, name, gender, age)
if self.head is None:
self.head = new_node
else:
current_node = self.head
while current_node.next is not None:
current_node = current_node.next
current_node.next = new_node
# 删除年龄为 age 的节点
def delete_node(self, age):
if self.head is None:
return
# 处理头节点
if self.head.age == age:
self.head = self.head.next
return
# 处理非头节点
current_node = self.head
while current_node.next is not None:
if current_node.next.age == age:
current_node.next = current_node.next.next
return
current_node = current_node.next
# 输出链表
def print_list(self):
if self.head is None:
print("链表为空")
return
current_node = self.head
while current_node is not None:
print(f"学号:{current_node.student_id},姓名:{current_node.name},性别:{current_node.gender},年龄:{current_node.age}")
current_node = current_node.next
# 测试代码
if __name__ == '__main__':
linked_list = LinkedList()
linked_list.add_node(1, "张三", "男", 20)
linked_list.add_node(2, "李四", "女", 22)
linked_list.add_node(3, "王五", "男", 20)
linked_list.add_node(4, "赵六", "女", 19)
linked_list.print_list()
linked_list.delete_node(20)
linked_list.print_list()
```
上述代码中,我们定义了 `Node` 类作为链表节点,包括学号、姓名、性别、年龄和指向下一个节点的 `next` 属性。然后定义了 `LinkedList` 类作为链表,包括头节点 `head` 和三个方法:添加节点、删除年龄为 age 的节点和输出链表。最后,我们测试了一下代码。
阅读全文