单链表的插入删除(考研)
知识总览

按位序插入(带头结点)
注意:p=p->next是表示修改指针p的位置,把p指向原来的下一个节点。

当插入链表中的第一个结点时:

指定结点的后插操作

指定结点的前插操作
假设给个未知数P,如何找到P结点的前驱结点?因为单链表只能从前往后查找不能从后往前查找,所以p结点之前的区域都是未知的
因此我们得到的时间复杂度就是O(n)。我们虽然可以通过前面的方法进行查找,但是如果不传入头指针那么我们之前的方法不就不能用
了吗?

这里我们可以用一个偷天换日的方法,将p中的data与s中的data相互交换,这样我们可以省去查找的时间,将时间复杂度降至O(1)。

按位序删除(带头结点)



指定结点的删除:如果不带头结点,如何删除第一个元素?

p->next->data存在一个小的bug,如果说p结点刚好是链表的最后的结点,那么它就无法获取结点后的下个结点的data就会发生错误。
所以我们能明白但链表的局限性,在下期学习双链表看看是如何解决单链表存在的问题。

浙公网安备 33010602011771号