狸猫换太子--删除无头单链表中结点

来源:互联网 发布:跑腿软件排名 编辑:程序博客网 时间:2024/05/16 18:12

狸猫换太子–删除无头单链表中结点

@(算法学习)

学习自《编程之》。

很有意思的一种做法。

给定一个没有头指针的单链表,一个指针指向次单链表中的一个中间结点,删除此结点。

分析:这种根本没法找到前驱的情况下,如何变通删除呢?既然每个结点只是内容不一样,但是形式相同,是否可以考虑鸠占鹊巢,狸猫换太子呢?

当前结点内容更换为后面结点的内容,从内存中删除后继结点,这样,可以保证链表依旧相连,内容恰好是删除当前结点要得到的结果。不编号看待结点,谁又能看得出来我们干了什么呢。

核心代码:

pCurrent->next = pNext->next; //将当前结点指针指向后继的后继pCurrent->data = pNext->data;//当前结点内容换成后继结点delete pNext;

三行代码,一行剥夺后继结点的关系,一行取出后继结点的值,最后一行删掉后继结点,已经没有价值了。

残酷。

1 0
原创粉丝点击