第1章 数据结构(C++版)绪论_第1页
第1章 数据结构(C++版)绪论_第2页
第1章 数据结构(C++版)绪论_第3页
第1章 数据结构(C++版)绪论_第4页
第1章 数据结构(C++版)绪论_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构(C++版)普通高等教育“十一五”国家级规划教材

高等学校计算机系列1课程基本要求学分:5共计16周周学时:4(讲)+2(实验)成绩构成:考勤(到课堂听课)10%完成书面作业10%完成上机实验作业10%期末卷面考试70%2第1章绪论

为解决现实世界中某个复杂问题,设计一个高效适用的程序。需要解决怎样合理地组织数据、建立合适的数据结构,怎样设计适用的算法,以提高程序执行的时间效率和空间效率。“数据结构”就是在此背景下逐步形成、发展起来的。主要内容: 数据结构的基本概念 抽象数据类型

C++语言简介 算法描述与分析3本章分为二讲第1讲1.1问题的引入

1.2数据结构的基本概念1.3抽象数据类型第2讲1.4C++语言

1.5算法描述与分析

4数据结构第1章绪论第1讲51.1问题的引入1.1.1引言资料档案类问题;棋类对奕、院系机构问题;

交通或通信网问题;非数值计算6资料档案类问题

线性表7棋类对奕、院系机构问题

树结构8交通或通信网问题

图结构91.1问题的引入1.1.2“数据结构”课程研究内容

研究内容包括数据的逻辑结构、数据在计算机内的存储结构以及定义在它们之上的一组运算(插入、删除、查找、排序等)。

数据结构是专业基础课、核心课。

101.2数据结构的基本概念1.2.1计算机领域中的数据1.数据(data)

是描述客观事物的数字、字符以及所有能够输入到计算机中并被计算机处理的信息的总称。

11

1.2.1计算机领域中的数据2.数据元素(DataElement)

是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。数据元素除了可以是一个数字或一个字符串以外,也可以由一个或多个数据项组成。数据项(DataItem)是有独立含义的数据的最小单位,数据项有时也称为字段(field)。121.2.1计算机领域中的数据3.数据对象(DataObject)

是具有相同性质的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},再如:字母字符数据对象是集合C={′A′,′B′,…,′Z′}。图1.1中的学籍表也可看成一个数据对象。13再看实例:图书档案类问题

线性表数据项数据元素数据对象指整个表141.2.2数据结构相关概念

1.数据的逻辑结构(DataStructure)

是带有结构的数据元素的集合,它是指数据元素之间的相互关系,即数据的组织形式。把数据元素间的逻辑上的联系,称之为数据的逻辑结构,如:线性结构、树结构、图结构。特点:抽象关系,独立于计算机。15数据逻辑结构的形式化描述数据结构的形式化描述是:DataStructure=(D,R)其中,D代表数据对象,R代表数据关系。例1.1线性表结构List

=

(D,R)D

=

{ai|ai∈ElemSet,i

=

1,2,…,n,n≥0}R

=

{<ai-1,ai>|ai-1,ai∈D,i=2,3,…,n}16数据逻辑结构的形式化描述例1.2复数结构Complex

=

(D,R)D

=

{c1,c2|c1,c2∈float}R

=

{<c1,c2>}c1,c2分别代表复数的实部和虚部其中,D代表数据对象,仅有两个实数;

R代表数据关系,体现数据之间的逻辑结构;

c1,c2分别代表复数的实部和虚部。17数据逻辑结构的形式化描述例1.3树形结构某课题小组有1位教师T,3名研究生G,6名本科生S。他们的关系是,教师指导3名研究生,每个研究生指导2名本科生。

Group

=

(D,R)D

=

{T,Gi,Sij,i=1,2,3,j=1,2,}R

=

{R1,R2}R1

=

{<T,Gi>i=1,2,3,}R2

=

{<Gi,Sij>i=1,2,3,j=1,2,}

根据对课题研究小组的形式化描述,可得出如图所示树形结构。18

2.数据的存储结构

数据的逻辑结构在计算机存储设备中的映象被称为数据的存储结构,也可说数据的存储结构是逻辑结构在计算机存储器里的实现,又称物理结构。依赖于计算机。常见存储结构有:顺序存储结构(顺序映象)、链式存储结构(非顺序映象)。1.2.2数据结构相关概念19顺序存储结构(顺序映象)在计算机存储器里实现,又称物理结构。

a1

a2

…an

在内存中地址是连续的20链式存储结构(非顺序映象)在计算机存储器里实现,又称物理结构。

a2

a3

…a1

在内存中地址不一定是连续的Ha1a2an……^H211.3抽象数据类型1.3.1数据类型(DateType)

数据类型实质上是一组值的集合和定义在该集合之上的一组操作的总称。数据类型(DataType)是和数据结构密切相关的一个概念,它最早出现在高级语言中。例如:intkey;只需了解整数的加、减、乘法或取模运算的抽象特性,不必了解“位运算”细节。221.3.2抽象数据类型(ADT)抽象数据类型(AbstractDateType

)是指基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。抽象数据类型与其在计算机内如何表示和实现无关。抽象数据类型(ADT)和数据类型(DataType)实质上是一个概念。整数类型就是一个ADT实例。23抽象数据类型的描述一般格式:ADTname{

数据对象:D={……}

数据关系:R={……}

基本操作:创建;输出;插入;删除;等等;}ADTname;24线性表的抽象数据类型描述:ADTLinear_list{

数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0;}

数据关系:R={<ai-1,ai>|ai-1,ai∈≥D,i=2,3,…,n}

基本操作:设L为Linear_list类型的线性表初始化空线性表;

求线性表表长;

取线性表的第i个元素;

在线性表的第i个位置插入元素x;

删除线性表的第i个元素;

等等;}ADTLinear_list;线性表ADT描述与线性表的形式化描述(List=(D,R))相似,只是ADT增加了对数据对象的若干操作的描述。25复数抽象数据类型的描述:ADTcomplex{

数据对象:D={c1,c2︱c1,c2∈FloatSet}

数据关系:R={<c1,c2>c1,c2分别为实部、虚部}

基本操作:创建一个复数;

输出一个复数;

求两个复数相加之和;

求两个复数相减之差;

求两个复数相乘之积;

等等;}ADTcomplex;261.3.3抽象数据类型的实现抽象数据类型的具体实现依赖于所选择的高级语言的功能。有三种方法:面向过程的程序设计—C语言“包”、“模块”的设计方法--是一种过渡面向对象的程序设计–C++语言等271.3.3抽象数据类型的实现

面向过程的程序设计,长期以来作为程序设计的主流方法,现仍是程序设计入门和基础教育的主流方法。根据所要求的操作设计出相应的子程序或子函数,一个源程序由若干个函数构成。当前广泛使用的C语言就是一种典型的面向过程语言。详见例1.4

面向对象的程序设计(ObjectOrientedProgramming,OOP),正在逐步成为当今程序设计的主流方法。在面向对象的程序设计语言中,存储结构和操作函数的说明被封装在一个整体结构中。详见例1.5

28小结“数据结构”课程的主要内容可以概括如下:数据逻辑结构存储结构基本运算线性表顺序存储结构插入删除树链式存储结构排序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论