生成一个学生信息链表,包括学号和姓名,学号由1,2,3,4,6排列并print输出,然后插入一个学号为5的学生信息到链表中,要求其排在4和6之间, 把排序后的结果print输出。
时间: 2024-02-04 20:02:25 浏览: 25
好的,我可以帮您回答这个问题。以下是 Python 代码实现:
```python
class Student:
def __init__(self, student_id, name):
self.student_id = student_id
self.name = name
self.next = None
# 创建学生信息链表
head = Student(1, "Tom")
tail = head
tail.next = Student(2, "Jack")
tail = tail.next
tail.next = Student(3, "Mary")
tail = tail.next
tail.next = Student(4, "Lucy")
tail = tail.next
tail.next = Student(6, "John")
tail = tail.next
# 打印原始链表
p = head
while p:
print("学号: ", p.student_id, " 姓名: ", p.name)
p = p.next
# 插入学号为5的学生信息
p = head
while p.next:
if p.student_id == 4 and p.next.student_id == 6:
new_student = Student(5, "Kate")
new_student.next = p.next
p.next = new_student
break
p = p.next
# 排序链表
dummy = Student(-1, "")
dummy.next = head
tail = None
while tail != dummy.next:
cur = dummy.next
pre = dummy
while cur.next != tail:
if cur.student_id > cur.next.student_id:
pre.next = cur.next
cur.next = cur.next.next
pre.next.next = cur
cur, pre = pre.next, dummy
else:
cur, pre = cur.next, pre.next
tail = cur
# 打印排序后的链表
p = dummy.next
while p:
print("学号: ", p.student_id, " 姓名: ", p.name)
p = p.next
```
输出结果为:
```
学号: 1 姓名: Tom
学号: 2 姓名: Jack
学号: 3 姓名: Mary
学号: 4 姓名: Lucy
学号: 6 姓名: John
学号: 1 姓名: Tom
学号: 2 姓名: Jack
学号: 3 姓名: Mary
学号: 4 姓名: Lucy
学号: 5 姓名: Kate
学号: 6 姓名: John
```