链表的中间不可能存在环,换出现的位置;截止条件:不判断p1的原因是p2迭代的步长大,有环p2会追上p1会出现p2==p1,无环:p2会率先到达链表的尾结点,或者尾结点的上一结点
p2==NULL 表示p2遍历到尾结点的上一个结点上 , p2->next == NULL表示p2遍历到了尾结点上,这两种都表示链表无环,只有循环结束,p1==p2时,表示链表有环
分类:
其他好文 时间:
2018-08-07 11:02:41
阅读次数:
159
利用头插法实现的链表的逆置,每次取头结点作为新链表的尾结点(注意新链表的头结点)
分类:
其他好文 时间:
2018-08-04 11:51:17
阅读次数:
128
找到最大结点,判断是不是尾结点,是直接返回,不是在判断是不是头结点,需要注意的已经注释
分类:
移动开发 时间:
2018-08-03 11:32:26
阅读次数:
176
链表的删除,需要两指针联动,作用是为了断链与挂链,因为现在链表是单向的,无法表示上一个结点,需要考虑删除的结点是否是头结点,无需考虑删除的是否是尾结点
分类:
其他好文 时间:
2018-08-03 10:38:59
阅读次数:
122
题目:输入一个链表,输出该链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始他们的值一次是1、2、3、4、5、6.这个链表的倒数第3个结点是值为4的结点。 解题思路:本题中所给的链表是单向链表,单向链表的结点只有从前往 ...
分类:
其他好文 时间:
2018-06-21 13:44:19
阅读次数:
143
一、双链表结构 最近总会抽出一些零碎的时间片段,尝试按照自己的想法自定一了一个双链表结构的集合。我发现,数组、单链表或者双链表,乃至其他结构,本质上就是一种思想。数组和单链表就不多说了,前几篇也尝试自定义了,就双链表来说,就可以定义如下几种结构: (1)头结点+...数据结点.....+尾结点 (2 ...
分类:
其他好文 时间:
2018-05-17 19:52:08
阅读次数:
178
题目链接:两个链表的第一个公共结点 思路:如果两个链表有公共结点,则第一个公共结点以及之后的所有结点都是重合的,即至少它们的尾结点是重合的。因为两个链表长度不一定相等,所以同步遍历时不能保证两个链表同时到达尾结点。假设一个链表比另一个多k个结点,先在长的链表上遍历k个结点即尾部对齐,再同步遍历,保证 ...
分类:
其他好文 时间:
2018-02-13 12:27:01
阅读次数:
140
数据结构(六)——循环链表一、循序链表简介1、循环链表的定义循环链表的任意元素都有一个前驱和一个后继,所有数据元素在关系上构成逻辑上的环。循环链表是一种特殊的单链表,尾结点的指针指向首结点的地址。循环链表的逻辑关系图如下:2、循环链表的设计实现循环链表的设计实现要点:A、通过模板定义CircleList,继承自LinkedListB、定义连接链表首尾的内部函数C、实现首元素的插入和删除操作D、重写
分类:
其他好文 时间:
2018-01-21 13:45:02
阅读次数:
168
思路:直接将后续结点的数据复制过来,然后删除后续结点。 坑:如果这个结点是链表的尾结点,那么此题无解。可以将该结点标记为假。 ...
分类:
编程语言 时间:
2017-10-31 14:27:04
阅读次数:
232
题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路: 1.遍历链表得到链表的长度l,找到从前往后的第l-k+1个节点。需要遍历两遍。 2.遍历一次即可的方法:两个指针,第一个指针从头向尾移动k-1步后第二个指针开始从头向尾移动,第一个指针到尾结点时第一个指针指向倒数第k个结点。 ListNo ...
分类:
其他好文 时间:
2017-09-28 10:45:00
阅读次数:
119