您的位置:首页 > 理论基础 > 数据结构算法

python实现数据结构的基础

2018-02-20 22:11 330 查看
数据结构是计算机存储、组织数据的方式。不同语言只是数据结构实现的不同工具,但本质是一样的。

Python的强大之处在于其自带的数据结构:列表 list,元组 tuple,字典 dict 等,都非常的强大,尤其是列表,在它们的基础上可以方便快捷的实现常用的数据结构:栈,队列,链表,树等,而没有必要重复造轮子。

栈和队列

栈,是一种仅允许在表的一端进行插入和删除运算的受限线性表,满足后进先出原则。

队列,是一种仅允许在表的前端进行删除操作,而在表的后端进行插入操作的受限线性表,满足先进先出原则。

Python 中的列表,其自有的 insert() 函数可以在任意位置插入, pop() 函数可以在任意位置弹出并删除。

因此,在 Python 中,栈和队列可以用列表实现。

链表和树

链表,是一种在逻辑上连续,但在物理存储单元上不一定连续的线性存储结构。包括存储数据元素的数据域和存储下一个节点地址的指针域。

树,是一种典型的非线性结构,可以用来表示层次关系,因表示的样子很像一颗倒立的树而得名。

在树中,最简单也是应用最广泛的是二叉树,同样包括存储数据元素的数据域和存储左右孩子节点地址的指针域。

在C语言中,因为指针的加持,可以很直观的实现链表和树等需要指针的数据结构,而在 Python 中,虽然没有显式的指针,但每个变量,除了基本数据类型(int,float 等),都是一个『引用』。

引用:当你创建一个对象并给它赋一个变量的时候,这个变量仅仅引用那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的引用。

可以看出,引用类似于指针,只是不能进行指针运算,比如, p + 1 指向下一个元素之类的。

因此,在 Python 中,链表和树可以通过定义节点类和引用来实现。

说明

在本专栏接下来的文章中,会用 Python 去实现基本的数据结构:栈,队列,链表和树,并都会附上一个小的应用实例。然后结合剑指offer 中的数据结构相关笔试题,用 Python 来完成,以更好地延伸到数据结构更多的操作和实践中去,希望本专栏能助你在 Python 编程学习之路一臂之力。

本专栏许多内容参考自经典书籍:Problem Solving with Algorithms and Data Structures using Python 在此对作者深表感谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 数据结构