--事物的难度远远低于对事物的恐惧!
数据结构!应该很多人对数据结构与算法感到害怕,以此来说数据结构与算法不重要,已经有现成的使用,很多人会这么觉得,那只有一个原因:他自身的功底就不行!但是对于一个工程师而言,绕过数据结构与算法,幻想写出高质量的代码,就好像学音乐的想绕过乐理,直接弹奏肖邦、贝多芬,可能性基本为零,大佬神人除外,哈哈哈哈。有些会觉得实际写代码,好像感觉没用上什么数据结构与算法,都是拿前人的代码+键盘上熟悉的两个按键,改改完事,也能运行,很开心,开心就好。但是,我认为,学习数据结构与算法,就像每天跑步锻炼一样,也许一天两天看不出什么变化,但是,精气神已经慢慢融入了你的身体,变化是潜移默化的。同样,数据结构与算法的功底,也在潜移默化的影响你所写代码的质量。武林高手,没有一个不是内功深厚,光靠花拳绣腿就能称霸武林的!
本系列起名为《数据结构与算法论持久战(C++版)》,之所以叫论持久战,第一是数据结构与算法在我看来,永远也学不完,高深莫测,需要老骥伏枥、愚公移山的精神。第二是因为代码是C++写的,哈哈哈哈。闲话少说,老规矩,多点沉淀,少点浮躁!开篇目录走起!
战役2:数据的艺术
战役3:初识程序的灵魂
战役4:程序灵魂的审判
战役5:算法的时间复杂度
战役6:算法的效率度量
战役7:轻松时刻
战役8:反省编程简介
战役9:智能指针示例
战役10:C++异常简介
战役11:异常类构建
战役12:顶层父类的创建
战役13:类族结构的进化
战役14:线性表的本质操作
战役15:线性表的顺序存储结构
战役16:顺序存储结构的抽象实现
战役17:StaticList(静态线性表)和DynamicList(动态线性表)
战役18:顺序存储线性表的分析
战役19:数组类的创建(上)
战役20:数组类的创建(下)
战役21:线性表的链式存储结构
战役22:单链表的具体实现
战役23:顺序表和单链表的对比分析
战役24:单链表的遍历优化
战役25:静态单链表的实现
战役26:典型问题分析
战役27:再论智能指针(上)
战役28:再论智能指针(下)
战役29:循环链表的实现
战役30:双向链表的实现
战役31:老生常谈的两个宏(Linux)
战役32:Linux内核链表剖析
战役33:双向循环链表的实现
战役34:栈的概念及实现(上)
战役35:栈的概念及实现(下)
战役36:队列的概念及实现(上)
战役37:队列的概念及实现(下)
战役38:两个有趣的问题
战役39:字符串类的创建(上)
战役40:字符串类的创建(下)
战役41:KMP子串查找算法
战役42:KMP算法应用
战役43:递归的思想与应用(上)
战役44:递归的思想与应用(中)
战役45:递归的思想与应用(下)
战役46:排序的基本概念
战役47:选择排序和插入排序
战役48:冒泡排序和希尔排序
战役49:归并排序和快速排序
战役50:排序的工程应用示例
战役51:树的定义与操作
战役52:树的存储结构与实现
战役53:树中结点的查找操作
战役54:树中结点的插入操作
战役55:树中结点的清除操作
战役56:树中结点的删除操作
战役57:树中属性操作的实现
战役58:树形结构的层次遍历
战役59:树到二叉树的转换
战役60:二叉树的深层特性
战役61:二叉树的存储结构设计
战役62:二叉树中结点查找操作
战役63:二叉树中结点插入操作
战役64:二叉树中结点删除操作与清除
战役65:二叉树中属性操作的实现
战役66:二叉树的层次遍历
战役67:二叉树的典型遍历方式
战役68:二叉树的比较与相加
战役69:二叉树的线索化实现
战役70:二叉树经典面试题分析
战役71:图的定义与操作
战役72:图的存储结构(上)
战役73:图的存储结构(下)
战役74:图的遍历(BFS)
战役75:图的遍历(DFS)
战役76:最小生成树(Prim)
战役77:最小生成树(Kruskal)
战役78:最短路径(Dijkstra)
战役79:最短路径(Floyd)
战役80:最长不下降序列(完结)