链表相交问题 反转
http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/06/2580026.html 关于哈希的解决方案: 哈希查找是O(1),通过key索引直接查找是否存在,缺点是无序,无法找到指定范围内的值。
如果哈希的key不是数字索引,通过会通过哈希函数进行运算得到,例如md5,id3等
http://blog.csdn.net/jiqiren007/article/details/6572685 理解链表相交,与之前想的不一样。 为什么从len_max-len_min起步 ?
找出相交的位置: 截取到相同的长度,开始匹配

http://blog.csdn.net/linyunzju/article/details/7753548 理解检测是否有环 ?
一个指针1步,一个指针2步,如果有环,肯定会碰面。
反转
非递归方法
链表始终要注意,结尾为NULL

验证过,方法1

递归方法

- //递归方式
- ListNode * ReverseList2(ListNode * head)
- {
- //如果链表为空或者链表中只有一个元素
- if(head==NULL || head->m_pNext==NULL)
- return head;
- else
- {
- ListNode * newhead=ReverseList2(head->m_pNext);//先反转后面的链表
- head->m_pNext->m_pNext=head;//再将当前节点设置为其然来后面节点的后续节点
- head->m_pNext=NULL;
- return newhead;
- }
- }
链表建立:
插表头

读入的数据顺序与线性表的逻辑顺序正好相反: ...->dataN-1->dataN
插表尾

读入的数据顺序与线性表的逻辑顺序正好相同: data1 ->data2 ....dataN
找到链表的第K个元素
K个小链表逐步向前移动,到结尾时,链表头就是需要的值。
K个数组,需要保存K个存储值,而链表表示只需要保存 头和尾。

浙公网安备 33010602011771号