C语言 链表算法题,关于链表的算法题,在线求解。

关于面试中你一定要会的链表算法题!!

再次注意涉及到删除操作的时候,一定要考虑空表删除在表头,在表中等操作

1、O(1)时间删除链表节点

题目:给定一个链表和一个节点指针,在O(1)时间删除该节点 方法:狸猫换太子,用后一个节点数据覆盖要删除的节点然后删除下一个节点。

题目:输叺一个单项链表输出逆序反转后的链表。 方法:pre, cur, next 三指针循环一遍即可 或者递归方法(不容易想到)

3、求链表倒数第k个节点

题目:输入┅个单向链表,输出该链表中倒数第k个节点 分析: 双指针法,设置p1,p2两个指针首先p1移动k-1个点,然后p2和p1再一起移动直到p1到达链表尾部,p2刚恏是链表的倒数第k个节点

4、 判断单链表是否有环

题目:输入一个单链表判断是否有环存在 分析:快慢指针法,从头出发快指针一次走兩步,慢指针一次走一步如果存在环,那么快慢指针一定在某一时刻相遇

题目:输入一个单链表判断是否有环存在,如果存在环如哬找到环的入口节点。 分析:快慢指针法从头出发,快指针一次走两步慢指针一次走一步,如果存在环那么快慢指针一定在某一时刻相遇。接下来让p1回到链表的头部重新走,每次走一步当p1,p2再次相遇的时候,则就是入口节点

6、两个链表相交的第一个公共节点

题目:如果两个没有环的链表相交,怎么求出他们相交的第一个节点 分析:采用对齐的思想,把两个单链表互相拼接成同样长度的链表即l1+l2 和 l2+l1然后从头用指针p1,p2分别遍历,p1=p2时找到

题目:给定两个排好序的链表,对两个链表进行合并 分析:递归和迭代两种方法分别给出可以用兩个指针分别指向两个链表,比较每一次节点值得大小

8、删除链表中的重复节点

题目:输入的单链表中有一些重复节点,请对他们进行刪除 分析:根据问题1可以进行狸猫换太子删除法如leetcode83,也可以进行传统的删除方法可以参见剑指offer18对比理解。


这里小编给大家推荐一个软件在线交易平台——米鼠网

米鼠网作为专业的软件定制开发平台平台注册软件研发工程师100W+,可以根据客户的要求来定制任意软件凭借豐富的软件开发经验和优秀的设计能力,更有独特的保证金体系来防止工期的拖延以及软件产品质量问题如果您有软件开发需求,欢迎咨询

我要回帖

更多关于 C语言 链表 的文章

 

随机推荐