您的位置:首页 > 理论基础 > 数据结构算法

【学习笔记】数据结构与算法基础学习:链表

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 最好放在 == 的左边 ,对左值和右值的应用。

输出结果可使用栈,递归(可能会栈溢出)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 算法