1.输入十个学生的成绩,用链表存,在第五个同学前插入一个新的成绩90,输出新表。2.删除成绩为85的同学,输出新表。数据结构
时间: 2024-10-22 20:15:20 浏览: 10
首先,让我们理解如何使用链表数据结构来实现这两个操作:
1. **插入成绩**:
- 创建一个动态链表结构,每个节点包含学生成绩和指向下一个节点的指针。
- 初始化一个空链表作为头节点。
- 分配内存创建一个新的节点,存储成绩90。
- 将这个新节点设置为当前头节点(因为我们要插入到第一个位置)。
- 遍历现有链表,找到第四个节点(因为索引从0开始),然后将它的`next`指针指向新的节点。
- 新的节点的`next`指针设为空,因为它会成为新的第五个节点。
- 输出新链表,遍历每个节点并打印其成绩。
2. **删除成绩**:
- 同样遍历链表,当遇到成绩为85的节点时,做如下处理:
a. 如果这是第一个节点,那么更新头节点为第二个节点,并释放第一个节点。
b. 如果这不是第一个节点,找到前一个节点,将其`next`指针指向当前节点的`next`,跳过已被删除的节点。
- 输出新链表,如步骤1所述。
以下是伪代码示例:
```python
class Node:
def __init__(self, score):
self.score = score
self.next = None
def insert_new_score(lst, new_score):
# 插入代码...
def delete_student(lst, target_score):
if lst is not None:
if lst.score == target_score: # 如果是第一个节点
lst = lst.next
del lst # 删除并调整头节点
else:
prev = None
curr = lst
while curr and curr.score != target_score:
prev = curr
curr = curr.next
if curr is not None:
prev.next = curr.next # 跳过已删除节点
# 示例操作
scores = Node(90) # 假设初始链表只有一个节点
for i in range(4): # 添加其他九个节点(省略)
scores = Node(i+100, next=scores)
# 插入新分数
new_score_node = Node(90)
insert_new_score(scores, new_score_node)
# 删除成绩为85的学生
delete_student(scores, 85)
# 遍历并打印新链表
current = scores
while current is not None:
print(current.score)
current = current.next
```
阅读全文