删除单链表中最大值结点并返回值实验结果
时间: 2024-06-13 12:06:59 浏览: 102
链表中删除相同结点实验报告及源码
根据提供的引用内容,可以得到删除单链表中最大值结点的函数delmaxnode(LinkNode*& L)。该函数的参数为指向单链表头结点的指针L,函数的返回值为void类型。函数的实现过程如下:
1. 定义4个指针变量pre、p、maxp、maxpre,分别指向当前结点的前驱结点、当前结点、最大值结点、最大值结点的前驱结点,初始时pre和maxpre都指向头结点,p和maxp都指向头结点的下一个结点。
2. 进入循环,遍历单链表中的所有结点,如果当前结点的值比最大值结点的值大,则将maxp和maxpre更新为当前结点和当前结点的前驱结点。
3. 循环结束后,maxp指向的就是单链表中值最大的结点,maxpre指向的是最大值结点的前驱结点。
4. 将maxpre的next指针指向maxp的next指针,即删除最大值结点。
5. 释放maxp结点的内存空间。
6. 返回maxp结点的值。
下面是一个示例代码,用于测试delmaxnode函数的正确性:
```python
class LinkNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delmaxnode(L: LinkNode) -> int:
pre = L
p = L.next
maxp = p
maxpre = pre
while p != None:
if maxp.val < p.val:
maxp = p
maxpre = pre
pre = p
p = p.next
maxpre.next = maxp.next
val = maxp.val
del maxp
return val
# 测试代码
L = LinkNode(0)
p = L
for i in [1, 3, 2, 5, 4]:
p.next = LinkNode(i)
p = p.next
print("删除前:", end="")
p = L.next
while p != None:
print(p.val, end=" ")
p = p.next
print()
val = delmaxnode(L)
print("删除的最大值为:", val)
print("删除后:", end="")
p = L.next
while p != None:
print(p.val, end=" ")
p = p.next
print()
```
运行结果如下:
```
删除前:1 3 2 5 4
删除的最大值为:5
删除后:1 3 2 4
```
阅读全文