最近在找暑假实习,为了面试,复习一下算法和数据结构。随意翻到《编程之美》里的"无头单链表中删除节点":假设有一个没有头指针的单链表,一个指针指向此链表中间的一个节点(不是第一个,也不是最后一个),问如何将该节点从单链表中删除。
想法:要删除节点,得知道这个节点的前驱节点p,另p的next指向此节点的后继节点即可,但不知道头指针,而且还是单链表,那没法获得其前驱节点,也就没法删除该节点了啊?
解法:确实没法“删除”该节点,但有没有别的“变通”的方法?! 有! 将C节点的data赋值给B节点的data,再删除C节点,这样做的结果就等效“删除”了节点B。
想法:要删除节点,得知道这个节点的前驱节点p,另p的next指向此节点的后继节点即可,但不知道头指针,而且还是单链表,那没法获得其前驱节点,也就没法删除该节点了啊?
解法:确实没法“删除”该节点,但有没有别的“变通”的方法?! 有! 将C节点的data赋值给B节点的data,再删除C节点,这样做的结果就等效“删除”了节点B。
感触:以后遇到不能解决的事情,不妨试想下有没有其他“变通”的方法能达到预期的效果
转自我的搜狐博客:http://jluhlh.blog.sohu.com/301694207.html