【牛客算法笔试面试精讲笔记】链表问题

链表问题是常考知识点之一,在笔试面试题中在算法上不会有太大难度,主要注意以下几点:

1、指针涉及很多操作,容易考虑不周,着重考察面试者代码实现能力和不出错能力。。

2、链表和数组都是线性结构,数组是物理地址连续的一段存储空间,可以通过访问数组下标获得元素。而链表和数组最大的区别在于,链表的存储空间是临时分配的,单链表只能通过next指针获得下一个结点的位置,要想找到第i个元素,只能从头部一个个走下去。

链表的分类:

1、按照连接方向分类:单链表(只能通过next指针指向下一个节点),双链表(有previous 指针指向上一个节点)

2、按照有环无环分类:普通链表、循环链表(尾节点的next 指针指向头节点)

对于循环双链表来说,尾节点的next 指针指向头节点,头节点的previous指针指向尾节点。

链表问题代码实现的关键点:

1、链表调整函数的返回值类型,根据要求往往是节点类型(一般为头结点)

2、处理链表过程中,注意思考指针变化,先采用画图的方式理清逻辑,调整前后节点记得保存环境,不要让链表断线。

3、链表问题对于边界条件的讨论要求严格。

头节点、尾节点、空节点的情况都要注意,不要总假设指针有意义,要时刻判断节点是否为空。

关于链表插入和删除的注意事项:

1、特殊处理链表为空或者链表长度为1的情况

2、注意插入、删除操作的调整过程。删除头尾节点和空节点需要特殊考虑

双链表的插入与删除和单链表类似,但是需要额外考虑previous指针的指向。

 

 

 

    原文作者:进击的MsCat
    原文地址: https://blog.csdn.net/gulaixiangjuejue/article/details/85092702
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞