数据结构
文章平均质量分 85
江玉郎
不用看了,我还是喜欢吃火锅。
展开
-
数组与链表
下来开始学习数据结构,这篇文章以及以后关于数据结构的文章,不会写太多的细节,比如一些性质等。更多的是关注一些常见的数据结构如何用python 代码实现。学习的课本是数据结构与算法 python语言描述有兴趣的可以自己买来读读。1 顺序表python 的list 是一种采用分离式技术实现的动态顺序表,创建空表时不分配元素存储区,遇到insert 和append 要求加入元素,系统第一次分配能容...原创 2018-10-15 23:04:30 · 436 阅读 · 0 评论 -
链表的变形与操作
1 单链表的简单变形前言:链表的缺点是尾端加入元素的操作效率很低,因为这时只能从表头开始查找,直到找到表单最后一个结点,而后才能链接新结点我们可以改进一下,提高尾端插入元素的效率。下图给了一种可行的设计,表对象增加一个尾结点引用域。有个这个域,只需常量时间就能找到尾结点,在表尾加入新元素的操作就可能做到O(1)初始化和变动操作我们用类LList1() 继承前面讲的LList(),在L...原创 2018-10-19 21:31:59 · 237 阅读 · 0 评论 -
栈:概念与实现
栈(stack)是一种容器,可存入数据元素,访问元素,删除元素等。存入栈中的元素之间相互没有任何具体联系,只有到来的先后顺序。栈可以实现为在一端进行插入和删除的线性表,因此也称为后进先出表(LIFO)在表实现中,执行插入和删除一端的操作称为栈顶,另一端称为栈底。访问和弹出的都应该显是栈顶元素。对于顺序表,后端插入和删除是O(1)时间操作,应该用后端作为栈顶对于链接表,前端插入和删除都是O...原创 2018-10-20 14:52:03 · 163 阅读 · 0 评论 -
二叉树的基本概念
树形结构也是由结点(结构中的逻辑单元,可用于保存数据)和结点之间的连接关系(一种后继关系)构成。1. 几个基本概念1.1 二叉树定义:二叉树是结点的结点的有穷集合。这个集合或者是空集,或者其中有一个称为根节点的特殊结点,其余结点分属两颗不相交的二叉树,这两颗二叉树分别是原二叉树(或者说原二叉树的根节点)的左子树和右子树。二叉树也是一种递归结构。不包含任何结点的二叉树称为空树;只包含一个结...原创 2018-10-25 22:16:25 · 332 阅读 · 0 评论 -
队列的概念及实现
队列(quene),或成为队,也是一种容器,可存入元素,访问元素,删除元素。队列中也没有位置的概念,只支持默认方式的元素存入和取出。特点就是在任何时候访问或删除的元素,都是在此之前最早存入队列而至今未删除的那个元素,因此队列也是先进先出(FIFO)队列的操作也是一个封闭集合,通常包括:创建新队列对象(如创建空队列);判断队列是否为空(还可能需要判断满),将一个元素放入队列(一般称为入队,en...原创 2018-10-24 21:23:35 · 2591 阅读 · 4 评论 -
优先队列概念与其线性表的实现
概念:优先队列的特点是存入其中的每项数据都另外附有一个数值,表示这个项的优先程度,称其为优先级。优先队列应该保证,在任何时候访问和弹出的,总是当时在这个结构里保存的所有元素中,优先级最高的。基于线性表的实现...原创 2018-11-09 19:37:20 · 385 阅读 · 0 评论 -
遍历二叉树
从根结点出发应该能找到树中所有的信息,其基础是从父结点找到两个子节点。因此,实际中,常用二叉树的根结点代表这颗二叉树。遍历一颗二叉树,就是按某种系统化的方式,访问二叉树里的每个节点一次。很多复杂的二叉树操作需要基于遍历实现。例如找一个结点的父节点,在二叉树里做这件事,就像在单链表里找前一结点。二叉树有两种遍历方式:深度优先遍历、宽度优先遍历1. 深度优先遍历概念:按深度优先遍历一颗二叉树,...原创 2018-11-07 21:28:21 · 435 阅读 · 0 评论