python实现数据结构的基础
2018-02-20 22:11
330 查看
数据结构是计算机存储、组织数据的方式。不同语言只是数据结构实现的不同工具,但本质是一样的。
Python的强大之处在于其自带的数据结构:列表 list,元组 tuple,字典 dict 等,都非常的强大,尤其是列表,在它们的基础上可以方便快捷的实现常用的数据结构:栈,队列,链表,树等,而没有必要重复造轮子。
队列,是一种仅允许在表的前端进行删除操作,而在表的后端进行插入操作的受限线性表,满足先进先出原则。
Python 中的列表,其自有的 insert() 函数可以在任意位置插入, pop() 函数可以在任意位置弹出并删除。
因此,在 Python 中,栈和队列可以用列表实现。
树,是一种典型的非线性结构,可以用来表示层次关系,因表示的样子很像一颗倒立的树而得名。
在树中,最简单也是应用最广泛的是二叉树,同样包括存储数据元素的数据域和存储左右孩子节点地址的指针域。
在C语言中,因为指针的加持,可以很直观的实现链表和树等需要指针的数据结构,而在 Python 中,虽然没有显式的指针,但每个变量,除了基本数据类型(int,float 等),都是一个『引用』。
引用:当你创建一个对象并给它赋一个变量的时候,这个变量仅仅引用那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的引用。
可以看出,引用类似于指针,只是不能进行指针运算,比如, p + 1 指向下一个元素之类的。
因此,在 Python 中,链表和树可以通过定义节点类和引用来实现。
本专栏许多内容参考自经典书籍:Problem Solving with Algorithms and Data Structures using Python 在此对作者深表感谢!
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实现)
- 基础数据结构 之 队列(python实现)
- 基础数据结构 之 树(python实现)
- Python实现基础数据结构--单向链表
- 【数据结构】树与二叉树 基础要点+二叉树 Python 实现
- 基础数据结构:栈、队列——Python实现
- 基础数据结构:栈、队列——Python实现
- 基础数据结构:顺序表、链表——Python实现
- Python实现基础数据结构--队列
- 算法与数据结构基础 -- 排序 (C++实现)
- 数据结构与算法——三种基础排序算法C#实现(冒泡排序、选择排序、插入排序)
- 算法与数据结构基础10:C++实现——拓扑排序
- [从头学数学] 第261节 Python实现数据结构:红黑树(RB Tree)
- 用Python实现的数据结构与算法:链表
- 神经网络理论基础及Python实现详解
- [从头学数学] 第247节 Python实现数据结构:栈
- 小白学数据结构——二、树与堆(基本概念及二叉树、二叉堆的python实现)
- C++【container】基础数据结构实现
- python基础===八大排序算法的 Python 实现
- 【数据结构】队列和栈 Python 实现