前言:今天我的C++老师问了我一道,相当于脑筋急转弯的题目,感觉特别有趣,在这里给大家分享一下:
题目是这样的:问,给出一个单项链表,给出一个结点指针p指向链表的某一个结点(这个结点不是链表的最后结点),我们如何在时间复杂度为O(1)的情况下实现这种删除结点问题。
分析:我们知道我们要想删除一个链表中的某一个结点时,我们需要知道的条件是,这个结点的前驱结点,以便后面进行的连接活动。但是呢这里我们又不能通过head结点的遍历来实现,因为这样的话时间复杂度就变成了O(n),所以呢这里我们要突破常规的想法,来实现,给他来一个狸猫换太子。
程序:单链表的结构体
typedef int ElemType;
struct ListNode //结点类型
{