数据结构 耿国华 西北大学 1-5数据结构与C语言表示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:viod swap1(int a,int b) { int c; c=a; a=b; b=c; printf(“swap1中的a=%d,b=%d”,a,b);10 }
viod swap2(int *a,int *b) { int c;
c=*a; *a=*b; *b=c; } viod main() { int x=100,y=800;
多个函数结果需带出时可选择如下方式: (1)全局变量方式:函数内给全局变量赋值,其值自
然带出。 (2)数组方式:同类的多个值,可放入一个数组,返
回数组指针或首地址即可。 (3)结构体方式:不同类的多个值,可放入一个结构
体,返回结构体指针或变量即可。 (注意:该结构体类型应全局有效)12
(4)指针方式:通过多个指针参数传地址。 返回
第 1 章 绪论
1.5 数据结构与C语言表示
面向对象和抽象数据类型
面向对象的概念
面向对象=对象+类+继承+通信
对象:是指在应用问题中出现的各种实体、事件和规格说
明等,它是由一组属性和在这组值上的一组服务构成的,
其中属性值确定了对象的状态。
类:把具有相同属性和服务的对象归到同一类,而把一个
类中的每一个对象称为该类的一个实例,它们具有相同的
ADT <ADT名>
{ 数据对象:<数据对象的定义> 结构关系:<结构关系的定义> 基本操作:<基本操作的定义>
}ADT <ADT名>
基本操作的定义格式为:
<操作名称> (参数表)
操作前提:<操作前提描述>
5
操作结果:<操作结果描述>
第 1 章 绪论
1.5 数据结构与C语言表示
ADT Complex {
服务。
继承:面向对象方法的最有特色的方面。
13
各个类的对象间通过消息进行通信。
第 1 章 绪论 1.5 数据结构与C语言表示 面向对象和抽象数据类型
面向对象的特点 面向对象程序设计的特点是封装性(Encapsulation)、
继承性(Inheritance)和多态性(Polymorphism)。
14
第 1 章 绪论
1.5 数据结构与C语言表示
结构化程序设计与函数的模块化
(2)结构化程序设计的构成单元 任何程序都是由顺序、选择、重复三种基本控制结构
来组成。
(a) 顺序结构 (b) 选择结构
(c) 重复结返构回 4
第 1 章 绪论
1.5 数据结构与C语言表示
用C语言实现的抽象数据类型ADT
ADT的定义格式
第 1 章 绪论
1.5 数据结构与C语言表示
面向对象和抽象数据类型
结构化的开发方法 结构化的开发方法是面向过程的开发方法,首先着眼于 系统要实现的功能。从系统的输入和输出出发,分析系 统要实现的功能,用自顶向下、逐步细化的方式建立系 统的功能结构和相应的程序模块结构。一旦程序功能需 要修改,就会涉及多个模块,修改量大,易于出错,并 会引起程序的退化。
{ 内部数据说明; 执行语句组;
} /*函数名*/ 2、算法描述要点
加注释、…、退出语句的区别等(p23-24) 9
第 1 章 绪论
1.5 数据结构与C语言表示
3.函数参数的传递
变量的作用域: 全局变量、局部变量 参数的传递方式: 传值、传地址
C语言函数参数为单向传值,但可用指针类型的参数实 现传地址。
15
第 1 章 绪论
1.5 数据结构与C语言表示
面向对象和抽象数据类型
面向对象的开发方法 面向对象的方法首先着眼于应用问题所涉及的对象,包 括对象、对象属性、要求的操作,从而建立对象结构和 为解决问题需要执行的时间序列,据此建立类的继承层 次结构,通过各个类的实例之间的消息连接实现所需的 功能。类的定义充分体现了抽象数据类型的思想,基于 类的体系结构可以把对程序的修改局部化,如果系统功 能的需求发生变化,只需修改类中间的服务即可,此时 类所代表的对象基本不变,从而确保系统不致因修改而 退化。
抽象数据模型
数据结构
非形式算法
伪语言程序
可执行程序
1.选择数学模型描述问题,确定解决问题的算法
2.为模型定义抽象数据类型,并用伪语言描述算法 3.确定抽象数据类型的实5 数据结构与C语言表示
结构化程序设计与函数的模块化
著名的计算机科学家wirth(沃思)提出了一个著名的公 式表达了程序设计的实质:算法+数据结构=程序。即“程 序是在数据的特定表示方式的基础上,对抽象算法的具体 描述”。
(1)用typedef定义所需的新类型结构:
typedef可以用来创建新数据类型,也可以为新创 建的数据类型命名,使用很方便,这在数据结构的 抽象描述方面很有用。
(2)用子函数实现各个操作。
返回 8
第 1 章 绪论
1.5 数据结构与C语言表示
算法描述规范与设计风格
1、算法表示形式: [函数返回值类型] 函数名([形式参数及说明])
数据对象:
假设:z1和z2是上述定义的复数
D={<e1,e2>|e1,e2∈RealSet } 则 Add(z1, z2, z3) 操作的结果
数R据1例关=系{如<:e,1,e抽2>象| 数e1是据复类数型的复实数数部的分定义:
| e2 是复数的虚数部分 }
即为用户企求的结果 z3 = z1 + z2
Initial(L) 初始化空线性表; Length(L) 求线性表的表长; Get(L,i) 取线性表的第i个元素; Insert(L,i,b)在表的第i个位置插入元素b; Delete(L,i) 删除线性表的第i个元素;
<ai,
7
第 1 章 绪论 1.5 数据结构与C语言表示
用C语言实现ADT
} ADT Complex
6
第 1 章 绪论 1.5 数据结构与C语言表示
例:简化线性表的ADT定义
ADT Linear_list 数据元素 所有ai属于同一数据对象,
i=1, 2,……,n n≥0; 逻辑结构 所有数据元素ai(i=1,2,…,n-1)存在次序关系 ai+1>,a1无前趋,an无后继; 操作 设L为Linear_list
程序结构=控制结构+数据结构 结构化程序设计是为使程序具有合理的结构,以保证 程序正确性而规定的一套程序设计的方法,是人们多年来 研究与实践的结晶。 (1)结构化程序设计目的 通过设计结构良好的程序,以程序良好的静态结构保 证程序动态执行的正确性,使程序易理解、易调试、易维3 护,以提高软件开发的效率,减少出错率。
16
第 1 章 绪论 1.5 数据结构与C语言表示 面向对象和抽象数据类型
结构化的开发方法和面向对象的开发方法的不同点 由于用面向对象开发方法建立起来的软件易于修改,与传 统方法相比,程序具有更高的可靠性、可修改性、可维 护性、可复用性、可适用性和可理解性。
返回 17
基本操作:
AssignComplex( &Z, v1, v2 )
操作结果:构造复数 Z,其实部和虚部分别被赋以参数 v1 和 v2 的值。
DestroyComplex( &Z)
操作结果:复数Z被销毁。
Add( z1,z2, &sum )
初始条件:z1, z2是复数。
操作结果:用sum返回两个复数z1, z2 的和值。
第 1 章 绪论 1.5 数据结构与C语言表示
数据结构与程序设计的关联性 结构化程序设计与函数的模块化 用C语言实现抽象数据类型 算法描述规范与设计风格 面向对象与抽象数据类型
1
第 1 章 绪论 1.5 数据结构与C语言表示 数据结构与程序设计的关联性
用抽象数据类型的概念来指导问题的求解过
程为:
数学模型
swap1(x,y); printf(“调swap1后x=%d,y=%d”,x,y); x=100;y=800; swap2(&x,&y); printf(“调swap2后x=%d,y=%d”,x,y);
11
}
第 1 章 绪论
1.5 数据结构与C语言表示
4.函数结果的带出方式
函数结果的带出方式共有三种: 全程变量、函数返回、传地址参数。
相关文档
最新文档