# 01 数据结构与算法学习开篇

![linkedlist](/images/algo/linkedlist.jpg)

数据结构与算法前前后后已经学习了很长时间，从一开始看[《数据结构与算法分析:C语言描述》](https://book.douban.com/subject/1139426/)，到后来看 Python 相关实现[《Problem Solving with Algorithms and Data Structures using Python》](https://facert.gitbooks.io/python-data-structure-cn)，但是一直感觉不得其法。

<!-- more -->
究其原因，一方面是自己对 C 语言一知半解，所以一开始练习太少；另一方面是工作中使用太少，知识这种东西只有到达一定的熟练程度才能真正发现其作用。现在有幸在极客时间订阅了王争老师的专栏[数据结构与算法之美](https://time.geekbang.org/column/126)，看过之后感觉很好，相比与之前看的书籍有很好的发散和扩展，恰逢[《数据结构与算法：python语言实现》](https://book.douban.com/subject/30323938/)也刚刚面市。所以决定下定决心在 2018 最后三个月好好重新学习数据结构与算法。因此就有了这个系列的博客，希望监督自己多加练习。

本系列博客会按照**专栏[数据结构与算法之美](https://time.geekbang.org/column/126)的结构组织，也会从中摘录部分内容，在此特地申明**，也非常推荐大家订阅此专栏。然后会以[《数据结构与算法：python语言实现》](https://book.douban.com/subject/30323938/)作为辅助来扩展内容，并且在每篇文章的最后，我会尽可能给出与当篇文章相关的 linkcode 习题。

当然作为自己的博客，目的不是复制别人的内容，是想对常用的数据结构作一个总结，然后督促自己动手实现这些数据结构和算法。最后想说一句，数据结构和算法看起来没用，我们平时大多数使用的都是语言内置好的容器和现成的函数，我们只需要知道它们的功能，无需关注它们的实现细节，我们也能写出我们的程序。但是程序的效率很大程度上依赖锁使用组件的效率，我们不关注这些细节，可能别人已经写好了，但是我们却没正确的使用。Python 就有以本书叫[《Python: Faster Way》](http://pythonfasterway.org/#/)，如果我们对 Python 常见数据结构有所了解，其时很自然的就会明白它们上面所说明的用法。

