@lzb1096101803
2016-03-21T10:47:54.000000Z
字数 363
阅读 456
数据结构和算法
给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。(已知需要删除结点的指针)
单向链表中删除一个结点,最常规的是从链表头结点开始,顺序遍历查找要删除的结点,当结点的next是被删除指针时,进行删除操作,保证链表没有断开,顺序查找需要O(n)时间复杂度
之所以需要从头查找,是因为我们需要得到被删除的结点的前一个结点。单向链表中没有指向前一个结点的指针,所以只好从链表头顺序查找
我们可以把下一个结点的内容复制到删除结点上覆盖原有的内容,再把下一个结点删除,这样就相当于删除了当前需要删除的结点
同时注意,如果只有一个结点,而我们需要删除的是这个结点,删除结点后,还需要把链表的头结点设置为null
但是对尾结点而言,仍然需要顺序查找,时间复杂度为O(n)