小肥柴慢慢手写数据结构(C篇)(0)
目录
0-0-1 写博客的初衷
许多低年级计算机类专业的朋友受限于各类原因,编程基础不扎实,学《数据结构》/算法课,直接上清华严版的数据结构很容易复现从入门到翻车最后放弃的流程。自己翻看一些经典教材和资料后,觉得还是从零开始对照原理手动编出代码后,再返回去看严版数据结构这本工具书,适度刷刷算法题 (比如Leecode),或许对大家学习DS这门课能有帮助和提升。
你要做的事情:
- 请从原理出发,想清楚后再手写代码,接着编码验证。
- 检视、优化自己的代码,看看还差哪些语法知识,可能还存哪些在bug和易用性提升, 哪里不会补哪里。
- 尝试把自己写的数据结构向标准的工具类对标,但是要适度。
- 1~3结束后再返回去看严版工具书,就会觉得很简单了。
- 有空的话自己翻看下参考书籍和经典的源码(如:C看linux内核源码,Java看原始实现),对比学习,多磨几次会收获很多。
- 最后,根据面试要求,总结出自己能够快速手写出来的最精简的代码版本,能够讲明白,毕竟学习和毕业都是为了恰饭。
0-0-2 参考资料和书籍
- 《数据结构与算法分析》 Mark Allen Weriss:易懂
- 《大话数据结构》:很通俗,基础不好的朋友可以先看看
- 《数据结构(C语言版)(第2版)》 严蔚敏:工具书,其实蛮好用的
- 各类网络资源,一般情况优先级:知乎>博客>B站
0-0-3 施工的顺序
- 自己列一个ADT
- 写一个极简版本
- 改一改
- 看书反思
- (闲得慌)可以尝试实现不同语言版本,顺便体会下它们的魅力,多看源码
0-0-4 相关资料
- 知乎上有一个大礼包,原贴和链接我要翻一翻,稍后补上。
- 很多资料的题解和他人的博客搜索起来不难。
- 初次学习时,能自己看书想明白的,不建议翻答案和看视频,毕竟学习就是一个修仙的过程,凡人不能跨阶段的。
0-0-5 完工部分传送门
- 准备知识和讨论
0-1 基础知识
0-2 经典问题
考研/类官方的相关学习资源(仅给出第一章链接,后续请自己顺着找):
(1)数据结构笔记(王道考研) 第一章:绪论
(2)【数据结构功法】第1话 · 数据结构入门竟如此简单? - C篇
1-1 线性表 ArrayList 原始版本
1-2 线性表 ArrayList 升级版本
1-3 线性表 ArrayList 严版教材实现浅析
2-1 单链表 SingleLinkedList self版实现(1)
2-2 单链表 SingleLinkedList self版实现(2)-链表反转与head/tail讨论
2-3 单链表 SingleLinkedList self版实现(3)–循环链表与快慢指针
2-4 单链表 严版教材实现浅析
2-5 SkipList 跳表
2-6 双链表 DoubleLinkedList
2-7 多项式
3-1 Stack栈简介
3-2 Stack应用举例
4-1 队列Queue
4-2 队列应用
5-1 二叉搜索树
5-1-2 BST的相关操作讨论
5-2 AVL树
5-3 树的遍历
5-4 中场小结
5-5 Huffuman编码 - Java篇
1-1 动态数组ArrayList
2-1 单链表LinkedList
3-1 栈Stack(Array实现)