【学习笔记】数据结构与算法基础学习:链表
2015-05-14 19:23
891 查看
链表:逻辑上连续,物理上离散的存储结构;分类有单向链表,双向链表,循环链表等。
1.加上控制头会比较好操作。
2.应检查malloc()返回值。
3.使用free()后应把指针置空(= NULL)。
问题:
1.判断链表是否有环,以及找交点
(1) 设置两个指针,一个比另一个移动快,有环的话两者会相遇。
(2) 找交点:链表A遍历,ptrA每移动一步与链表B的指针ptrB进行比较,若相等则有交点;ptrA遍历一遍,ptrB移动一步。
2.判断两链表是否有交点
(1) 求差值,找到等长处。进行遍历比较 ( (4) 的优化版)。O(n+m)
(2) 将链表的尾指向其中一个链表的头,用链表是否有环解决问题 O(m+2n)+O( )
(3) 将其中一条链表逆序,遍历逆序链表并求长度len,把两个链表的长度(a,b)相加减去得到的长度除2就是结点位置到链表尾的距离( (a+b) - len ) / 2
(4) 用穷举一个一个进行比较
(找链表的交点:看尾部是否为空)
3.无限大数乘法
注意 == 的使用 ,NULL 最好放在 == 的左边 ,对左值和右值的应用。
输出结果可使用栈,递归(可能会栈溢出)
1.加上控制头会比较好操作。
2.应检查malloc()返回值。
3.使用free()后应把指针置空(= NULL)。
问题:
1.判断链表是否有环,以及找交点
(1) 设置两个指针,一个比另一个移动快,有环的话两者会相遇。
(2) 找交点:链表A遍历,ptrA每移动一步与链表B的指针ptrB进行比较,若相等则有交点;ptrA遍历一遍,ptrB移动一步。
2.判断两链表是否有交点
(1) 求差值,找到等长处。进行遍历比较 ( (4) 的优化版)。O(n+m)
(2) 将链表的尾指向其中一个链表的头,用链表是否有环解决问题 O(m+2n)+O( )
(3) 将其中一条链表逆序,遍历逆序链表并求长度len,把两个链表的长度(a,b)相加减去得到的长度除2就是结点位置到链表尾的距离( (a+b) - len ) / 2
(4) 用穷举一个一个进行比较
(找链表的交点:看尾部是否为空)
3.无限大数乘法
注意 == 的使用 ,NULL 最好放在 == 的左边 ,对左值和右值的应用。
输出结果可使用栈,递归(可能会栈溢出)
相关文章推荐
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 数据结构与算法基础学习笔记
- 【算法学习笔记】06.数据结构基础 队列与堆栈初步
- 【算法学习笔记】06.数据结构基础 队列与堆栈初步
- 【算法学习笔记】08.数据结构基础 二叉树初步练习1
- 【算法学习笔记】08.数据结构基础 二叉树初步练习1
- 【算法学习笔记】09.数据结构基础 二叉树初步练习2
- 【算法学习笔记】09.数据结构基础 二叉树初步练习2
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- php学习第一章:PHP基础语法(三)数据结构与算法:2、单向链表
- 数据结构与算法学习笔记——链表部分实现(数组形式)
- 【算法学习笔记】11.数据结构基础 二叉树初步练习4
- 【算法学习笔记】11.数据结构基础 二叉树初步练习4
- 【算法学习笔记】12.数据结构基础 图的初步1
- 【算法学习笔记】12.数据结构基础 图的初步1
- 【数据结构与算法学习笔记】PART3 线性结构(除向量外,数组、栈、队列、链表)
- 数据结构与算法学习笔记之写链表代码的正确姿势(下)
- 数据结构与算法学习笔记之写链表代码的正确姿势(下)