d# Data-Structure
##代码内容
《数据结构与算法分析》上的代码实现,
按照该书的章节顺序,主要实现书上给出的例子。
##已经实现:
###第三章
- 链表
- 栈
- 队列
###第四章
- 排序二叉树
- 平衡二叉树
- 伸展树(自底向上)
- 伸展树(自顶往下)
###第五章
- 哈希表(分离链接法)
- 哈希表(开放定址法)
###第六章
- 二叉堆
- 左式堆
- 二项队列
###第七章
- 插入排序
- 希尔排序
- 堆排序
- 归并排序
- 快速排序
###第八章
-不相交集
###第九章
-邻接表(Versioni 1,2)
-拓扑排序(Versioni 1,2)
-单源最短路径算法
-最大网络流
-最小生成树
-深度优先搜索
-双连通性
-欧拉回路
###第十章
-分治算法:最近点问题
-动态规划:斐波那契数列,递归关系,矩阵乘法顺序,最优搜索二叉树
-随机化算法:跳表
-回溯法:收费公路重建,三连棋游戏(带AI)
###第十二章
-红黑树:自顶向下插入,自顶向下删除
-AA树
-Treap树
-Kd树
-配对堆
##文件内容
其中链表,栈,队列只给出了.h与.cpp文件
其他所有实现均给出了.h .cpp文件以及测试的test.cpp代码
编程平台是Vitual Studio 2010,使用c语言编写(其中有少部分使用std::cout输出)。
##我的博客
在我的博客中写下了这些数据结构的介绍,以及实现过程中遇到的问题,欢迎大家来我的博客:
http://blog.csdn.net/yw8355507
##完成!
耗时两个月,每天晚上5个小时。终于把《数据结构与算法分析》一书中,几乎所有的数据结构,以及它所提及的算法全部实现!(除了少数特别简单的未实现)
感慨万千,亲手实现数据结构与算法的过程,让我学习到了太多太多的东西:
**1.** **递归:**
以前编码的过程中,对于递归与非递归的转化是非常的不熟练的。现在无论怎么切换,头脑中都会有一个分层的模型可以模拟出整个的处理过程,并且现在可以非常熟练的使用递归来化简编码。
**2.** **时间空间分析:**
现在,我已经可以非常轻松的来评估一个算法的时间复杂度,空间复杂度。对于递归过程也能确定是否需要使用动态规划来处理。对于整个程序的运行时间已经可以轻松估计了。
**3.** **数据结构与算法选择:**
不夸张的说,现在看见网上的算法练习题,或者是公司的笔试题,第一遍就能立刻找到解法,然后可以进一步的通过选择合理的数据结构与算法,来尝试降低算法的复杂度。特别是对于hash表,优先队列,排序等等问题,似乎已经没有多少难度。
**4.** **攻克难题的信心:**
在实现这本书上的算法时,有许多算法书上基本就是顺带一提,或者一个很难的算法随意讲一讲。我总是尝试通过各种方法来把这个算法实现。
1. 首先是博客,书上讲的不清楚,别人的博客里总有讲的清楚的吧,最典型的例子就是伸展树的学习。书上大致一提,然后通过别人的博客,彻底学明白了,然后实现了出来。
2. 其次是自行尝试优化:图论中,寻找欧拉回路,要达到算法复杂度O(E+V),最初在网上博客中寻找,别人的博客中,要不是达不到这个复杂度,要不就是说的和书上一样含糊,而且没有实现的代码。一不做二不休,先写出可以用的再来优化,结果写完第一遍之后,就明白了该如何优化,书上即使不给我指导,我自己也能找出来,最后一共修改了3次代码,最后达到了书上所说的复杂度。
3. 最后是能去寻找英文的文献来解决自己遇到的问题。在实现自顶向下的红黑树时,翻遍了csdn的博客,找来找去都没有一个博客是使用自顶向下的方式实现红黑树的删除的,即使有,也不过是把《数据结构与算法分析》书中简单的几句话再抄一遍。最终还是通过了一篇英文的文献,找到了实现的方法。但是既没有流程图,也没有伪代码,自己一步一步把流程图与伪代码写出来,然后总算是完成了自顶向下的删除。并且还通过Jully的博客,学习了自底向上的红黑树实现方法,对比了他们之间的优势与劣势。
**4.** **调试的能力与耐心:**
说实话,二叉树这种带有指针的东西,特别是有父亲节点的时候,是最不好调试的。而且,在编码过程中,我犯过的错误不仅仅是逻辑错误,还有许多编码的错误,比如==写成=,这些细节都是编译器发现不了的,逐行阅读代码,也是自己没法注意到的。调试的过程,自己一步步加断点,打印,一步步缩小范围。找到出错的函数后,跟着代码一步步实现,最终都找出了bug。没有放弃一个代码,全部都完成了debug。
##下一步计划:
现在书单中还有《现代操作系统》,《深入理解计算机系统》,《APUE》,《Effective C++》《STL源码解析》等等书没有读完,最近事情也比较多,打算先看看操作系统,其他的书挑出重点来仔细读读,不再像数据结构这本书这样特别细的读了。再就是算法实习生这边,打算有时间再读读Python与机器学习的一些算法,CSS与HTML入个门,做一做小demo,让自己对前端的东西也能上手写一写。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
数据结构是计算机存储、组织数据的方式,它涉及到数据的逻辑结构、物理结构以及对数据的基本操作。数据结构的选择会影响到程序的效率、可读性和可维护性。常见的数据结构有数组、链表、栈、队列、树、图等。 算法则是解决特定问题的步骤,是对数据运算和操作的详细描述。算法的设计和选择会直接影响到程序的效率,因此,在设计和选择算法时,需要考虑到时间复杂度、空间复杂度等因素。 在实际应用中,数据结构和算法常常是密不可分的。通过对数据结构的理解和运用,以及对算法的学习和研究,可以帮助我们更有效地解决实际问题,提升编程能力。
资源推荐
资源详情
资源评论
收起资源包目录
《数据结构与算法分析》上的代码实现.zip (139个子文件)
RedBlackTree.cpp 11KB
SkipList.cpp 7KB
tie_tac_toe.cpp 7KB
SplayTree.cpp 6KB
MaxNetStream.cpp 5KB
AdjacencyList.cpp 5KB
AdjacencyList.cpp 5KB
AVLTree.cpp 5KB
AdjacencyList.cpp 5KB
SplayTree.cpp 5KB
binomialQueue.cpp 4KB
sort.cpp 4KB
binaryHeap.cpp 4KB
binaryHeap.cpp 4KB
binaryHeap.cpp 4KB
ShortestPath.cpp 3KB
deepFirst.cpp 3KB
PairingHeap.cpp 3KB
AdjacencyList.cpp 3KB
AdjacencyList.cpp 3KB
AdjacencyList.cpp 3KB
test.cpp 3KB
MinTree.cpp 3KB
roadRebuild.cpp 3KB
searchTree.cpp 2KB
AATree.cpp 2KB
binaryHeap.cpp 2KB
nearPoint.cpp 2KB
HashTable.cpp 2KB
dynamicPro.cpp 2KB
Treap.cpp 2KB
LeftistHeap.cpp 2KB
test.cpp 2KB
TopSort.cpp 2KB
HashTableOpenAdd.cpp 2KB
HashTableOpenAdd.cpp 2KB
HashTableOpenAdd.cpp 2KB
HashTableOpenAdd.cpp 2KB
HashTableOpenAdd.cpp 2KB
HashTableOpenAdd.cpp 2KB
test.cpp 2KB
HashTableOpenAdd.cpp 2KB
test.cpp 2KB
test.cpp 2KB
2-dTree.cpp 2KB
test.cpp 1KB
queue.cpp 1KB
queue.cpp 1KB
queue.cpp 1KB
test.cpp 1KB
list.cpp 1KB
list.cpp 1KB
list.cpp 1KB
test.cpp 1KB
test.cpp 1020B
test.cpp 950B
test.cpp 932B
test.cpp 917B
queue.cpp 854B
test.cpp 846B
test.cpp 829B
test.cpp 814B
stack.cpp 736B
test.cpp 731B
test.cpp 728B
test.cpp 725B
test.cpp 704B
test.cpp 692B
test.cpp 676B
DisjSet.cpp 651B
DisjSet.cpp 650B
test.cpp 632B
test.cpp 598B
main.cpp 595B
test.cpp 547B
test.cpp 487B
test.cpp 420B
AdjacencyList.h 3KB
AdjacencyList.h 3KB
AdjacencyList.h 2KB
AdjacencyList.h 2KB
AdjacencyList.h 2KB
nearPoint.h 2KB
RedBlackTree.h 2KB
binaryHeap.h 1KB
HashTableOpenAdd.h 1KB
HashTableOpenAdd.h 1KB
HashTableOpenAdd.h 1KB
HashTableOpenAdd.h 1KB
HashTableOpenAdd.h 1KB
HashTableOpenAdd.h 1KB
binaryHeap.h 1KB
SplayTree.h 1012B
tic_tac_toe.h 978B
SplayTree.h 927B
HashTableOpenAdd.h 923B
binomialQueue.h 922B
AVLTree.h 920B
binaryHeap.h 910B
PairingHeap.h 863B
共 139 条
- 1
- 2
资源评论
极致人生-010
- 粉丝: 2964
- 资源: 2825
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 电子万年历软件仿真(经过多次修改,保证正确性)
- Unity XR 手势射击控制脚本(适用于任何可手势识别的设备)
- 机械设计全自动电表(NB和IC卡表)控制和上壳装配线sw16可编辑非常好的设计图纸100%好用.zip
- 基于matlab的EAN-13条形码识别系统GUI界面.zip代码53
- matlab基于bp神经网络交通信号标志识别GUI界面13个标志.zip代码54
- 电子万年历答辩实物展示视频mp4格式
- 基于python实现的程序,包括哈希感知算法cvHash,图像切割cvsplit,固定目标检测cvRec(附文档ppt)等
- 计算0-10000之间所有偶数的和
- multiled.zip
- 基于php实现的哈希算法的人脸检索
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功