- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性表综合.doc
第一讲 线性表综合
第一章 引言 1
1.1 数据结构的概念 2
1.2 抽象数据类型 7
1.3 算法和算法分析 7
第二章 线性表 10
2.1 线性表的逻辑结构 10
2.2 线性表的顺序存储及算法实现 11
2.3 线性表的链式存储和算法实现 17
2.4 顺序表和链表的比较 26
2. 5 串 29
作业 39
第三章 栈和队列 44
3.1 栈 44
3.2 栈的应用举例 47
3.3 队列 59
3.4 队列应用举例 64
作业 66
第四章 数组、特殊矩阵和广义表 69
4.1 多维数组 69
4.2 特殊矩阵的压缩存储 72
4.3 稀疏矩阵 75
4.4 广义表 79
作业--编写程序题 81
第一章 引言
[学习要点]:
了解数据结构的一些基本概念,明白数据结构在程序设计中的重要作用(为什么要学习数据结构)。
引入:
在程序设计的过程中,经常会碰到这样的情况,同一个问题,不同的程序采用的算法基本相同,由于程序中采用变量存储方式(即数据结构)不同,空间和时间的差别比较大。因此要程序设计的过程中除了算法外还有数据结构的问题。
另外从计算机科学的特点来说,它是一门研究数据表示和数据处理的科学,数据是计算机化的信息,它是计算机可以直接处理的最基本和最重要的对象。无论是进行科学计算或数据处理、过程控制以及对文件的存储和检索及数据库技术等计算机应用领域中,都是对数据进行加工处理的过程。因此,要设计出一个结构好效率高的程序,必须研究数据的特性及数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。
1.1 数据结构的概念
1.1.1 为什么要学习数据结构
使用计算机来解决一个具体问题一般需要经过下列几个步骤:建立数学模型(确立算法(编程与调试,即首先要从该具体问题抽象出一个适当的数学模型,然后设计或选择一个解此数学模型的算法,最后编出程序进行调试、测试,直至得到最终的解答。
在计算机发展的初期,人们使用计算机的目的主要是处理数值计算问题。由于当时所涉及的运算对象是简单的整型、实型或布尔类型数据,所以程序设计者的主要精力是集中于程序设计的技巧上,而无须重视数据结构。随着计算机应用领域的扩大和软、硬件的发展,非数值计算问题越来越显得重要。据统计,当今处理非数值计算性问题占用了90%以上的机器时间。这类问题涉及到的数据结构更为复杂,数据元素之间的相互关系一般无法用数学方程式加以描述。因此,解决这类问题的关键不再是数学分析和计算方法,而是要设计出合适的数据结构,才能有效地解决问题。
例1.1 八皇后问题
问题描述略
在八皇后问题中,处理过程不是根据某种确定的计算法则,而是利用试探和回溯的探索技术求解。为了求得合理布局,在计算机中要存储布局的当前状态。从最初的布局状态开始,一步步地进行试探,每试探一步形成一个新的状态,整个试探过程形成了一棵隐含的状态树。如图1.1所示(为了描述方便,将八皇后问题简化为四皇后问题)。回溯法求解过程实质上就是一个遍历状态树的过程。在这个问题中所出现的树也是一种数据结构,它可以应用在许多非数值计算的问题中。
例1.2 教学计划编排问题
一个教学计划包含许多课程,在教学计划包含的许多课程之间,有些必须按规定的先后次序进行,有些则没有次序要求。即有些课程之间有先修和后续的关系,有些课程可以任意安排次序。这种各个课程之间的次序关系可用一个称作图的数据结构来表示,如图1.2所示。有向图中的每个顶点表示一门课程,如果从顶点vi到vj之间存在有向边vi,vj,则表示课程i必须先于课程j进行。
由以上两个例子可见,描述这类非数值计算问题的数学模型不再是数学方程,而是诸如表、树、图之类的数据结构。因此,可以说数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。
学习数据结构的目的是为了了解计算机处理对象的特性,将实际问题中所涉及的处理对象在计算机中表示出来并对它们进行处理。与此同时,通过算法训练来提高学生的思维能力,通过程序设计的技能训练来促进学生的综合应用能力和专业素质的提高。
1.1.2 有关概念和术语
数据(Data)是信息的载体,它能够被计算机识别、存储和加工处理。它是计算机程序加工的原料,应用程序处理各种各样的数据。计算机科学中,所谓数据就是计算机加工处理的对象,它可以是数值数据,也可以是非数值数据。数值数据是一些整数、实数或复数,主要用于工程计算、科学计算和商务处理等;非数值数据包括字符、文字、图形、图像、语音等。
数据元素(Data Element)是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。例如,学生信息检索系统中学生信息表中的一个记录、八皇后问题中状态树的一个状态
文档评论(0)