技巧:
1.插入头节点的技巧,诸如:删除链表中重复节点的题,反转链表某个区间的题,链表的直接插入,合并连个链表(可以先在链表1的头部新增一个头部节点,然后将该新增的头节点指向链表1的头节点,然后再进行操作,并将合并后的链表用链表1返回)等,通过插入头节点,可以使得对头节点的操作同后面节点的操作一样;
2.设置一快一慢指针,诸如:判断一个链表是否有环,有环环的入口点,链表的快速排序(通过求中间节点,然后merge,递归实现的快速排序)等
(1)其中最常见的就是找到链表的中间节点,由此引出来的一系列题目,找链表的中间节点,可以实现链表的快速排序,判断链表是不是回文(找到链表的中间节点,然后将链表的后半段进行逆转,然后将前后两段进行比较),将一个有序链表转换成BST树(找到链表的中间节点,设中间节点为mid,然后简历root,则root->left=buildBST(head),root->right=(mid),然后递归的构建BST树即可)
(2)求两个单链表的交点
3.将单链表头尾相连,诸如单链表的旋转一题中,则是将单链表头尾相连,但注意考虑给出左旋转的数K和链表长度n的比较,k=k%n
注意事项:
1.需要考虑所有的操作头节点是不是发生了变化,这点需要特别注意