单链表的插入删除(考研)

知识总览

 

按位序插入(带头结点)

注意:p=p->next是表示修改指针p的位置,把p指向原来的下一个节点。

 

 

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

 

 

 指定结点的后插操作

 指定结点的前插操作

 假设给个未知数P,如何找到P结点的前驱结点?因为单链表只能从前往后查找不能从后往前查找,所以p结点之前的区域都是未知的

因此我们得到的时间复杂度就是O(n)。我们虽然可以通过前面的方法进行查找,但是如果不传入头指针那么我们之前的方法不就不能用

了吗?

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

 按位序删除(带头结点)

 

 

 

 

 

 

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

 

 

 

 

 p->next->data存在一个小的bug,如果说p结点刚好是链表的最后的结点,那么它就无法获取结点后的下个结点的data就会发生错误。

所以我们能明白但链表的局限性,在下期学习双链表看看是如何解决单链表存在的问题。

 

posted @ 2020-12-16 20:11  Mikoor  阅读(388)  评论(0)    收藏  举报