链表是由节点和指针构成的数据结构,每个节点存有一个值,和一个指向下一个节点 的指针,因此很多链表问题可以用递归和while迭代来处理。
链表可以实现分散存储,不同于数组,链表并不能直接获取任意节点的值, 必须要通过指针找到该节点后才能获取其值。
说白了,玩链表本质就是玩指针。下面列出常见的链表算法
一.反转链表
核心:插入新链表头部。其他方法:放入栈中
二.从尾到头打印链表
三.删除链表的节点
核心:提前判断
四.合并两个排序的链表
核心:巧妙使用递归,让他们自己排队
五.相交链表
其他方法:哈希表
六.复杂链表的复制
核心:哈希表:把所有信息放入哈希表中,最后连接。有点算赖的感觉
拼接:复制一份双倍的链表,连接完之后删除没用的节点
七.两数相加
核心:考虑进位
八.二叉搜索树与双向链表
核心:二叉搜索树的中序遍历为递增序列,只需要定义一个pre记录前一个节点就可以实现双向链表了
寄语:当你打算放弃梦想时,告诉自己再多撑一天,一个星期,一个月,再多撑一年吧,你会发现,拒绝退场的结果令人惊讶。