删除单链表中最大值结点并返回值实验步骤
时间: 2024-06-13 15:06:59 浏览: 110
以下是删除单链表中最大值结点并返回值的实验步骤:
1. 定义一个函数delmaxnode,该函数接收一个单链表的头指针L作为参数。
2. 在函数中定义4个指针变量:pre、p、maxp、maxpre,分别指向当前结点的前驱结点、当前结点、最大值结点、最大值结点的前驱结点。
3. 初始化pre和p为L和L->next,maxp和maxpre为p。
4. 进入while循环,遍历单链表,如果当前结点的值比最大值结点的值大,则更新maxp和maxpre的值。
5. 更新pre和p的值,继续遍历单链表。
6. 循环结束后,maxpre指向的结点就是最大值结点的前驱结点,maxp指向的结点就是最大值结点。
7. 将maxpre的next指针指向maxp的next指针,即删除最大值结点。
8. 释放maxp指向的结点的内存空间。
9. 返回最大值结点的值。
```c
int delmaxnode(LinkNode*& L) {
LinkNode* pre = L, * p = L->next, * maxp = p, * maxpre = pre;
while (p != NULL) {
if (maxp->data < p->data) {
maxp = p;
maxpre = pre;
}
pre = p;
p = p->next;
}
maxpre->next = maxp->next;
int maxval = maxp->data;
free(maxp);
return maxval;
}
```
阅读全文