一、前言
链表是数据结构中重要的一个章节,他的重要性也不言而喻,在未来不管是笔试还是面试都会遇到这类的题目,所以接下来我就会把一些链表的常考的题目全部整理出来供大家学习指正。
二、学习刷题网站
点击下面链接即可进行刷题学习
开始刷题
三、刷题
先说明一下一些题目取自牛客网面试必刷TOP101
里面的一些题目在我以前的文章详细写到过,如果没有用新的方法就不会再做讲解
链表题目(一)
链表题目(二)
环状链表
<1>单链表的排序
描述:
给定一个节点数为n的无序单链表,对其按升序排序。
数据范围:0<n≤100000
要求:时间复杂度 O(nlogn)
示例1
输入:{1,3,2,4,5}
返回值:{1,2,3,4,5}
示例2
输入:{-1,0,-2}
返回值:{-2,-1,0}
思路分析:
①模拟数组
把每个节点的地址放到数组中,然后在数组中对他们的值进行排序,最后在重新构建链表。
int cmp(struct ListNode** e1, struct ListNode** e2)
{
return (*e1)->val - (*e2)->val;
}
struct ListNode* sortInList(struct ListNode* head ) {
if(head == NULL)
{
return NULL;
}
struct ListNode* nums[100000];
int count =