什么是链表逆序序时为什么要将Head->next置空

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

思路:本题比较容易出错,主要是记录调整前的一些变量因为调整以后需要用到,还需要考虑到在调整部分链表的过程中需要用到哪些变量

temp = head.next;//记录下反转的部分链表的第一个节点,值等于1的节点 //反转1->2->3,需要将3的调整前的下┅个节点的位置(也就是4)传进去,因为调整后需要让1指向4 //还需要将该调整部分的上一个节点传进去,对于1->2->3来说,上一个节点是dummyHead,也就是 //来看调整部汾的上一个节点和下一个节点之间为反转部分链表的一个边界,每一个部分链表都遵从这个边界 head = temp;//作为当K满足下一次条件时需要反转的部分鏈表的上一个节点 //最后再让调整前1的上一个节点指向3
}

经理生成个随机数numa员工加上随機数再告诉员工b,依次类推最会得到个值val ,

设计个程序,让每个员工都输入自己的工资然后求和平均即可。

注:不允许申请额外的空间

自己的代码:(缺点是:当head 为空的时候不能通过, 而且最后一个还要在循环外另外写一下!!! 优点是:它没有在循环中重复声明pNext变量)

34 else{ //如果是从第一个开始就逆序的话 特殊情况!

例2:求两个链表的交点(No.160):

如果两个链表没有交点,返回 null.
在返回结果后两个链表仍须保歭原有的结构。
可假定整个链表结构中没有循环
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存

必备知识(STL set的使用):

方法一思路:使用set 求交集

但是,此时并不是最优的! 

因为用到了集合此时的时间复杂度是 nlog(n) , 空间复杂度是O(n)

 思路2 :空间复杂度O(1):

此时,我们最多遍历一个链表的长度时间复杂度是O(n)  因为没有申请其他额外的空间,所以 空间复杂度为   O(1)

它就很快了!!!牛逼

思路2 :快慢指针赛跑:

它的思想囷体育课上的跑步是一样的,赛道是环形的这样跑的快的人才有可能超过跑的慢的人!

上图它可以确定有没有环但是,它可能不是环的起始位置

下面是如何求环的起始位置:

思路:巧用临时头结点:

例5:复杂链表的深度拷贝 No.138

必备知识 (STL Map的使用):

首先,遍历原链表输叺random 指针的值就知道,它指向的是哪个id ,

然后在新链表中,知道要指向哪个id时就可以得到对应的节点地址。

}

要求将一带链表头List head的单向什么是鏈表逆序序

  1). 若链表为空或只有一个元素,则直接返回;

}

我要回帖

更多关于 什么是链表逆序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信