第1章概论 数据结构 田鲁怀著
- 格式:doc
- 大小:35.50 KB
- 文档页数:2
第1章绪论本章主要介绍以下内容1、数据结构的概念及其研究的主要内容2、基本概念和术语3、算法的概念、特点以及效率评价方法本章重点和难点:1、数据结构、数据类型、ADT、算法等重要概念。
2、算法的描述方法以及评价标准与方法1.1 数据结构的概念及其研究的主要内容当我们需要使用计算机去解决实际问题的时候,我们总是希望计算机越智能越好,但是可能多数使用计算机的人都没有去想一个问题,即计算机的智能是如何得来的,如何使计算机智能提高?作为计算机专业的学生,这个问题就必须去问,而且还能够做出正确的回答。
先让我们看一个简单的例子:例1:已知集合A={1,3,4,6,7,8,97},B={1,3,5,7,,10,12},求集合A和集合B的交集。
对于这个问题的求解过程,如果用纸和笔来运算,是一道非常简单的题目,如果用计算机来解决,我们都应该做些什么呢?用计算机解决实际问题的一般步骤:1、问题定义。
分析问题是什么?明确问题要求是什么?理解问题做什么?2、建立模型。
将实际问题中的客观对象的属性及联系,抽形成逻辑数据模型。
3、定义数据。
将数据模型的对象定义成计算机能存储处理的存储结构。
4、算法设计。
根据存储结构,找出求解问题的策略和方法步骤。
5、编写程序。
将算法用程序设计语言表示出来。
6、调试运行。
将数据和程序输入计算机,查错修改,运行得到结果。
7、分析结果。
计算结果是否符合要求,若符合则结束,否则,返回监察修改。
上述7个步骤中,从步骤1到步骤5都是人工工作部分,步骤6也不都是计算机的工作,人工要对程序进行调试,步骤7其实也是一个人工工作,所以,大家可以发现,真正计算机做的工作不多,而人工做的是绝大部分。
在人工做的这几个步骤中,建立模型和算法设计是较困难的两个步骤。
1.1.1 数据结构研究的问题对数据的操作不单纯是数值计算(仅占计算机数据处理的10%),比如求函数的值,求方差等,更多的是非数值计算,如检索、排序、插入、删除等。
数据结构习题解答信息工程学院徐燕萍第1章绪论一、基本内容数据、数据元素、数据对象、数据结构、存储结构和数据类型等概念术语的确定含义;抽象数据类型的定义、表示和实现方法;描述算法的类C语言;算法设计的基本要求以及从时间和空间角度分析算法的方法。
二、学习要点1.熟悉各名词、术语的含义,掌握基本概念,特别是数据的逻辑结构和存储结构之间的关系。
分清哪些是逻辑结构的性质,哪些是存储结构的性质。
2.了解抽象数据类型的定义、表示和实现方法。
3.熟悉类C语言的书写规范,特别要注意值调用和引用调用的区别,输入、输出的方式以及错误处理方式。
4.理解算法五个要素的确切含义:①动态有穷性(能执行结束);②确定性(对于相同的输入执行相同的路径);③有输入;④有输出;⑤可行性(用以描述算法的操作都是足够基本的)。
5.掌握计算语句频度和估算算法时间复杂度的方法。
三、基础知识题1.1简述下列术语:数据、数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
答:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示(又称映像)。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
1.2试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。
答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。
数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。
程序设计语言中的数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
而抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。
A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。
A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。
A.顺序队列 B. 链表 C. 有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
数据结构学习笔记(转载)数据结构笔记(1)第一章概论1.数据:信息的载体,能被计算机识别、存储和加工处理。
2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。
3.数据结构:数据之间的相互关系,即数据的组织形式。
它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。
3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。
常用的运算:检索/插入/删除/更新/排序。
4.数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
数据的存储结构是逻辑结构用计算机语言的实现。
5.数据类型:一个值的集合及在值上定义的一组操作的总称。
分为:原子类型和结构类型。
6.抽象数据类型:抽象数据的组织和与之相关的操作。
优点:将数据和操作封装在一起实现了信息隐藏。
7. 抽象数据类型ADT:是在概念层上描述问题;类:是在实现层上描述问题;在应用层上操作对象(类的实例)解决问题。
8.数据的逻辑结构,简称为数据结构,有:(1)线性结构,若结构是非空集则仅有一个开始和终端结点,并且所有结点最多只有一个直接前趋和后继。
(2)非线性结构,一个结点可能有多个直接前趋和后继。
9.数据的存储结构有:1)顺序存储,把逻辑相邻的结点存储在物理上相邻的存储单元内。
2)链接存储,结点间的逻辑关系由附加指针字段表示。
3)索引存储,存储结点信息的同时,建立附加索引表,有稠密索引和稀疏索引。
4)散列存储,按结点的关键字直接计算出存储地址。
10.评价算法的好坏是:算法是正确的;执行算法所耗的时间;执行算法的存储空间(辅助存储空间);易于理解、编码、调试。
11.算法的时间复杂度T(n):是该算法的时间耗费,是求解问题规模n的函数。
记为O(n)。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nl og2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
自考《数据结构》各章要点第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。
·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。
·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据的操作。
定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·原子类型:由语言提供。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。
相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。
算法取决于数据结构。
算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
数据结构田鲁怀习题答案数据结构是计算机科学中的重要基础课程,它涉及到各种数据的组织、存储和管理方法。
学习数据结构需要掌握一系列的概念和技巧,而习题是检验学生理解和掌握程度的重要方式之一。
本文将给出一些数据结构田鲁怀习题的答案,希望能够帮助读者更好地理解和应用这门课程的知识。
1. 什么是数据结构?数据结构是一种组织和存储数据的方式,它涉及到数据的逻辑关系和物理存储方式。
常见的数据结构包括数组、链表、栈、队列、树、图等。
通过合理选择和使用数据结构,可以提高程序的运行效率和数据的管理能力。
2. 数组和链表的区别是什么?数组和链表都是常见的线性数据结构,但它们在存储和操作方式上有所不同。
数组是一段连续的内存空间,可以通过下标访问元素,插入和删除元素需要移动其他元素。
链表是由节点组成的,每个节点包含数据和指向下一个节点的指针,插入和删除元素只需要修改指针,不需要移动其他元素。
3. 栈和队列有什么特点?栈和队列是常见的数据结构,它们都是一种特殊的线性结构。
栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作,类似于弹夹。
队列是一种先进先出(FIFO)的数据结构,只能在队列的一端插入元素,在另一端删除元素,类似于排队。
4. 二叉树和平衡二叉树有何区别?二叉树是一种每个节点最多有两个子节点的树结构,它可以是空树,也可以是非空树。
平衡二叉树是一种特殊的二叉树,它的左右子树高度差不超过1,可以保持树的平衡性,提高查找和插入操作的效率。
5. 图的遍历方法有哪些?图是一种由节点和边组成的非线性数据结构,常见的遍历方法有深度优先搜索(DFS)和广度优先搜索(BFS)。
DFS通过递归或栈实现,从一个节点开始,尽可能深地访问其他节点;BFS通过队列实现,从一个节点开始,逐层访问其他节点。
6. 哈希表的原理是什么?哈希表是一种根据关键字直接访问数据的数据结构,它通过哈希函数将关键字映射到数组的索引位置。
当不同的关键字映射到同一个索引位置时,称为哈希冲突,可以通过链表或开放寻址法解决。
第一章概论自测题
一、填空题
1. 数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的和运算等的学科。
2. 数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的有限集合。
3. 数据结构包括数据的、数据的和数据的这三个方面的内容。
4. 数据结构按逻辑结构可分为两大类,它们分别是和。
5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
6.在线性结构中,第一个结点前驱结点,其余每个结点有且只有1个前驱结点;最后一个结
点后续结点,其余每个结点有且只有1个后续结点。
7. 在树形结构中,树根结点没有结点,其余每个结点有且只有个前驱结点;叶子结点没有结点,其余每个结点的后续结点数可以。
8. 在图形结构中,每个结点的前驱结点数和后续结点数可以。
9.数据的存储结构可用四种基本的存储方法表示,它们分别是。
10. 数据的运算最常用的有5种,它们分别是。
11. 一个算法的效率可分为效率和效率。
二、单项选择题
()1. 非线性结构是数据元素之间存在一种:
A)一对多关系B)多对多关系C)多对一关系D)一对一关系
()2. 数据结构中,与所使用的计算机无关的是数据的结构;
A) 存储B) 物理C) 逻辑D) 物理和存储
()3. 算法分析的目的是:
A) 找出数据结构的合理性B) 研究算法中的输入和输出的关系
C) 分析算法的效率以求改进D) 分析算法的易懂性和文档性
()4. 算法分析的两个主要方面是:
A) 空间复杂性和时间复杂性B) 正确性和简明性
C) 可读性和文档性D) 数据复杂性和程序复杂性
()5. 计算机算法指的是:
A) 计算方法B) 排序方法C) 解决问题的有限运算序列D) 调度方法
()6. 计算机算法必须具备输入、输出和等5个特性。
A) 可行性、可移植性和可扩充性B) 可行性、确定性和有穷性
C) 确定性、有穷性和稳定性D) 易读性、稳定性和安全性
三、简答题
1.数据结构和数据类型两个概念之间有区别吗?
2. 简述线性结构与非线性结构的不同点。
四、分析下面各程序段的时间复杂度
五、设有数据逻辑结构S=(D,R ),试按各小题所给条件画出这些逻辑结构的图示,并确定相对于关系R ,哪些结点是开始结点,哪些结点是终端结点?
1. D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4) }
2。
D={d1,d2,…,d9}
R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5), (d6,d7),(d8,d9) }
3。
D={d1,d2,…,d9}
R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9), (d5,d6),(d8,d9),(d9,d7), (d4,d7), (d4,d6)}
2. s=0;
for (i=0; i<n; i++)
for(j=0; j<n; j++) s+=B[i][j]; sum=s;
1. for (i=0; i<n; i++) for (j=0; j<m; j++) A[i][j]=0; 3. x=0;
for(i=1; i<n; i++) for (j=1; j<=n-i; j++) x++; 4. i=1;
while(i<=n) i=i*3;。