数据结构的一些摘要
来源:互联网 发布:艾蕾 知乎 编辑:程序博客网 时间:2024/05/18 04:40
1.抽象数据类型
程序设计的基本法则之一是:例程不应超过一页。
模块化的优点:
1)调试小程序比调试大程序容易的多;
2)多个人同时对一个模块式程序编程更加容易;
3)一个写得好的模块化程序把某些依赖关系只局限在一个例程中,这样使得修改起来更加容易。
由模块化是有益的可以推出:全局变量和副作用是有害的。
抽象数据类型(abstract data type ADT)是一些操作的集合。对诸如表、集合、图和他们的操作一起可看作是抽象数据类型。对于集合ADT,我们有诸如并,交,测定大小以及取余等操作。或者我们也可以只要两种操作:并和查找,这两种操作又在集合上定义了一种不同的ADT。
2.表ADT
几个概念:
1)空表:大小为0的表;
2)后继元:当前元素的后一个;
3)前驱元:当前元素的前一个;
3.表的简单数组实现:
对表的所有操作都可以使用数组来实现。虽然数组是动态指定的,但是还是需要对表的大小的最大值进行估算。这会导致有可能浪费大量的空间。数组实现使得PrintList和Find以线性时间执行,FindKth以常数时间。而插入和删除的代价昂贵。
因为插入和删除的运行时间是如此的慢以及表的大小必须事先已知,所以简单数组一般不用来实现表这种结构。
4.链表
为了避免插入和删除的线性开销,我们允许表可以不连续存储。
链表由一系列在不必再内存中相连的结构组成。每一个结构均包含表元素和包含指向该元素后继元的Next指针。最后一个单元的Next指针指向NULL,ANSI C规定NULL为0;
5.栈
概念很简单,栈是一种后进先出的数据结构,而队列(Queue)则是一种先进先出的结构,
6.stack的用法
Stack使用的一个最经典的例子就是算术表达式的求值了,这其中还包括前缀表达式和后缀表达式的求值。E. W. Dijkstra发明了使用两个Stack,一个保存操作值,一个保存操作符的方法来实现表达式的求值,具体步骤如下:
1) 当输入的是值的时候Push到属于值的栈中。
2) 当输入的是运算符的时候,Push到运算符的栈中。
3) 当遇到左括号的时候,忽略
4) 当遇到右括号的时候,Pop一个运算符,Pop两个值,然后将计算结果Push到值的栈中
7.Queue的应用
在现实生活中Queue的应用也很广泛,最广泛的就是排队了,”先来后到”,以及Queue这个单词就有排队的意思。
- 数据结构的一些摘要
- 上课的一些摘要
- session的一些摘要
- 文件的一些摘要
- HDOJ 1005 的一些分析的摘要
- 关于directX文档的一些摘要
- web2.0涉及的一些技术摘要
- 关于拷贝构造函数的一些摘要
- 《High Performance JavaScript》的一些摘要1
- 《High Performance JavaScript》的一些摘要2
- 《High Performance JavaScript》的一些摘要3
- 正则表达式的一些规则摘要
- 程序员的思维修炼一些摘要
- 关于Dorado标注使用的一些摘要
- 【阅读摘要】关于散热器的一些知识点
- cookie和session的一些摘要
- 数据结构的一些方法
- 数据结构的一些算法
- iphone空间占用上的QQ程序竟然搞到2个多G,但是QQ本身只有100M左右,剩下的都是QQ接受的文件、视频、图片等,怎么清除这些,腾出空间?
- pandas 使用
- Ubuntu 16.04 LTS 配置 theano 笔记
- 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
- 解决CentOs下SeLinux拦截nginx读取文件的问题
- 数据结构的一些摘要
- 解决乱码问题
- Python3学习笔记
- 1021. 个位数统计 (15)
- 前端上传图片预览
- Android 状态栏通知Notification的创建与使用
- [DP] POJ
- Linux下多文件中查找内容中含某关键字文件的方法
- mybatis动态标签的学习