《软考之旅》——数据结构导论总结
2015-10-11 15:19
288 查看
概念:数据结构是指一组相互之间存在一种或多种特定关系的数据的组织方式和
它们在计算机内的存储方式,以及定义在该组数据上的一组操作。合理的数据结构可降低程序设计的复杂性,提高程序执行的效率。
这整本书就是围绕这句话展开的。组织方式:将实际问题中的数据(既原始数据)按照人类更接近的理解方式组织起来,以便很好的体现数据之间的关系,这又称为数据的逻辑结构,逻辑结构又指数据元素之间的关联方式;存储方式:为了能用计算机加工处理,逻辑结构还必须转换为能被计算机存储的存储结构;我的理解:逻辑结构和存储结构之间的关系可以用高级程序设计语言和机器语言之间的关系比喻,在软件开发的过程中,程序员要用高级程序设计语言实现需求,然后在计算机内,高级语言要转换为机器语言才能被计算机所识别。操作:操作就是对数据的查找和排序过程,既数据的基本运算;提高程序的执行效率就是对数据逻辑结构的合理布局,以及对数据的基本运算,其中评价运算好坏可通过时间复杂度和空间复杂度体现。
自己理解:计算机实实在在存在的数据。
2·数据项:在数据库中数据项又称为字段或域。
3·数据元素:(简称为元素)数据的基本单位,在程序中做为一个整体而加以考虑和处理;也是运算的基本单位,其中,数据元素是由数据项组成。
等价于数据库中相应结构:
集合,是指在任意两个结点之间都没有邻接关系,组织结构松散,然后,当集合中数据元素一个接一个的线性排列时就组成了线性表;那为什么又有栈,队列,数组一系列的线性结构出现呢?比如说程序的递归处理,或许线性表可以实现,但它未必是最好的解决方式,所以,栈出现了,而栈和线性表区别在哪?——运算受限,怎么体现?因为栈中的插入和删除运算都限定在表的某一端进行;队列:类似于操作系统中进程调度等问题是由队列实现的,而队列和线性表区别在哪?——运算受限,怎么体现?因为在队列中必须再队列尾端插入数据元素,在队列首部被删除数据元素。
而树形的出现,是在集合的基础上,不仅仅是数据元素之间一个一个一次相邻接,而上下具有分支,层次结构,也就是说上层的数据元素和下层的数据元素之间可以相邻接;图是树的进一步进化,既任意两个数据元素之间都可以相邻接。
总的来说,线性和非线性结构都是在集合的基础上,对集合中数据元素的组合方式。
1·顺序存储:将表中的结点依次存放在计算机内存中一组连续的存储单元中。既逻辑结构中相邻的结点其存储位置也相邻。
2·链接存储:
a)单链表结构:一个数据元素和一个指针组成单链表的一个结点。
b)循环链表:在单链表的基础上,最后的一个结点的指针指向第一个结点既可以构成循环链表。
c)双向循环链表
这是线性表的各个存储结构实现方式,对比于顺序表和链表,都有各自的特点,区别在于对每种存储结构进行操作(插入,删除等)其时间性能和空间性能的比较。比如进行插入运算,在顺序表和链表中都需要定位,但在顺序表中,就是结点间不断的比较和移动,而在单链表中,不需要结点移动,只需元素间进行比较即可。
2·排序:在数据表的基础之上,将一组数据按照规定的次序重新排列。排序往往是为查找服务的,这就是查找和排序之间的联系。
这就是目前我对数据结构导论的认识,总的一句话:数据结构导论就是围绕对每一种数据的逻辑结构的物理结构的操作,就其操作方式而分析其效率性能。
它们在计算机内的存储方式,以及定义在该组数据上的一组操作。合理的数据结构可降低程序设计的复杂性,提高程序执行的效率。
数据结构导论宏观导图:
这整本书就是围绕这句话展开的。组织方式:将实际问题中的数据(既原始数据)按照人类更接近的理解方式组织起来,以便很好的体现数据之间的关系,这又称为数据的逻辑结构,逻辑结构又指数据元素之间的关联方式;存储方式:为了能用计算机加工处理,逻辑结构还必须转换为能被计算机存储的存储结构;我的理解:逻辑结构和存储结构之间的关系可以用高级程序设计语言和机器语言之间的关系比喻,在软件开发的过程中,程序员要用高级程序设计语言实现需求,然后在计算机内,高级语言要转换为机器语言才能被计算机所识别。操作:操作就是对数据的查找和排序过程,既数据的基本运算;提高程序的执行效率就是对数据逻辑结构的合理布局,以及对数据的基本运算,其中评价运算好坏可通过时间复杂度和空间复杂度体现。
【基本概念】
1·数据:官方理解:所有被计算机存储,处理的对象。自己理解:计算机实实在在存在的数据。
2·数据项:在数据库中数据项又称为字段或域。
3·数据元素:(简称为元素)数据的基本单位,在程序中做为一个整体而加以考虑和处理;也是运算的基本单位,其中,数据元素是由数据项组成。
等价于数据库中相应结构:
【存储】
【逻辑结构】
集合,是指在任意两个结点之间都没有邻接关系,组织结构松散,然后,当集合中数据元素一个接一个的线性排列时就组成了线性表;那为什么又有栈,队列,数组一系列的线性结构出现呢?比如说程序的递归处理,或许线性表可以实现,但它未必是最好的解决方式,所以,栈出现了,而栈和线性表区别在哪?——运算受限,怎么体现?因为栈中的插入和删除运算都限定在表的某一端进行;队列:类似于操作系统中进程调度等问题是由队列实现的,而队列和线性表区别在哪?——运算受限,怎么体现?因为在队列中必须再队列尾端插入数据元素,在队列首部被删除数据元素。
而树形的出现,是在集合的基础上,不仅仅是数据元素之间一个一个一次相邻接,而上下具有分支,层次结构,也就是说上层的数据元素和下层的数据元素之间可以相邻接;图是树的进一步进化,既任意两个数据元素之间都可以相邻接。
总的来说,线性和非线性结构都是在集合的基础上,对集合中数据元素的组合方式。
【物理结构】
每一种逻辑结构都有其相对应的物理结构,这里以线性表的存储结构为例。1·顺序存储:将表中的结点依次存放在计算机内存中一组连续的存储单元中。既逻辑结构中相邻的结点其存储位置也相邻。
1001 王涛 男 20 567 | 1002 潘晓鑫 女 19 555 | 1003 刘勇 男 20 545 | …. |
a)单链表结构:一个数据元素和一个指针组成单链表的一个结点。
b)循环链表:在单链表的基础上,最后的一个结点的指针指向第一个结点既可以构成循环链表。
c)双向循环链表
这是线性表的各个存储结构实现方式,对比于顺序表和链表,都有各自的特点,区别在于对每种存储结构进行操作(插入,删除等)其时间性能和空间性能的比较。比如进行插入运算,在顺序表和链表中都需要定位,但在顺序表中,就是结点间不断的比较和移动,而在单链表中,不需要结点移动,只需元素间进行比较即可。
【数据处理】
1·查找:对数据表的一种操作方式,高效率的查找建立在排序基础之上。2·排序:在数据表的基础之上,将一组数据按照规定的次序重新排列。排序往往是为查找服务的,这就是查找和排序之间的联系。
这就是目前我对数据结构导论的认识,总的一句话:数据结构导论就是围绕对每一种数据的逻辑结构的物理结构的操作,就其操作方式而分析其效率性能。
相关文章推荐
- LeetCode Add and Search Word - Data structure design
- 数据结构_线性结构_栈与队列
- 数据结构_线性结构_栈与队列
- 第六周项目五 数据结构实践——后缀表达式(栈)
- 《数据结构、算法及应用》9.(C++实施订单)
- 数据结构和算法
- 第六周项目四数据结构实践——数制转换(栈)
- *第六周*数据结构实践项目三【括号的配对】
- C语言数据结构-顺序队列
- C语言数据结构-链栈
- 算法与数据结构——入门总结与自学资料推荐
- 数据结构实践项目——串
- 数据结构实践——计数的模式匹配
- [数据结构]二叉查找树 简单实现
- 【栈项目3 - 括号的匹配--第六周】
- 数据结构实践——字符串加密
- 数据结构实践——顺序串算法
- LLVM自定义数据结构概述
- 夕拾-数据结构-选择&堆排序
- C/C++ 数据结构练习题1