您好,欢迎光临本网站![请登录][注册会员]  
文件名称: (c语言)数据结构教程
  所属分类: 其它
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2008-12-16
  提 供 者: u0142*****
 详细说明: 1.1 数据结构讨论的范畴 Niklaus Wirth Algorithm + Data Structures = Programs 程序设计: 为计算机处理问题编制一组指令集 算法:处理问题的策略 数据结构:问题的数学模型 例如: 数值计算的程序设计问题 结构静力分析计算 ─━ 线性代数方程组 全球天气预报 ─━ 环流模式方程 非数值计算的程序设计问题 例一: 求一组(n个)整数中的最大值 算法: 基本操作是“比较两个数的大小” 模型:? 例二:计算机对弈 算法:对弈的规则和策略 模型:? 例三:足协的数据库管理 算法:需要管理的项目?如何管理?用户界面? 模型:? 概括地说, 数据结构描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中的表示和实现 1.2 基本概念 一、数据与数据结构 数据: 所有能被输入到计算机中,且被计算机处理的符号的集 合计算机操作的对象的总称 是计算机处理的信息的某种特定的符号表示形式 数据元素: 数据中的一个“个体”,数据结构中讨论的基本单位 数据项:数据结构中讨论的最小单位 数据元素是数据项的集合 例如: 运动员(数据元素) 姓名 俱乐部名称 出生日期 参加日期 职务 业绩 其中    出生日期  年  月  日 是组合项 数据结构:带结构的数据元素的集合 例如,一个含12位数的十进制数可以用三个4位的十进制数表示 3214,6587,9345 ─ a1(3214),a2(6587),a3(9345) 在a1、a2和a3 之间存在“次序”关系  a1,a2 、 a2,a3 3214,6587,9345 ≠ 6587,3214,9345  a1  a2  a3    a2  a1  a3 又例,2行3列的二维数组 {a1, a2, a3, a4, a5, a6} a1 a2 a3 a4 a5 a6 行的次序关系:row = {,,,} 列的次序关系:col = {,,} 再例,一维数组 {a1, a2, a3, a4, a5, a6}中存在 次序关系: {| i=1, 2, 3, 4, 5} 数据的逻辑结构可归结为以下四类: 线性结构 树形结构 图状结构 集合结构 数据结构的形式定义为: 数据结构是一个二元组 Data_Structures = (D, S) 其中:D是数据元素的有限集,S是D上关系的有限集。 严格地讲,以上定义仅是数据的逻辑结构的定义 数据的存储结构 ─━ 逻辑结构在存储器中的映象 数据元素的映象方法: 用二进制位(bit)的位串表示数据元素 (321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2 关系的映象方法:(表示 x, y 的方法) 顺序映象 以存储位置的相邻表示后继关系 y的存储位置和x的存储位置之间差一个常量C 而C是一个隐含值,整个存储结构中只含数据元素本身的信息 链式映象 以附加信息(指针)表示后继关系 需要用一个和x在一起的附加信息指示y的存储位置 在不同的编程环境中,存储结构可有不同的描述方法, 当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。 例如:以三个带有次序关系的整数表示一个长整数时,可利用C语言中提供的整数数组类型,定义长整数为: typedef int Long_int [3] 二、数据类型 在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。因为类型明显或隐含地规定了,在程序执行期间,变量或表达式所有可能取值的范围,以及在这些之上允许进行的操作。 数据类型是一个值的集合和定义在此集合上的一组操作的总称。 三、抽象数据类型(Abstract Data Type 简称ADT) 是指一个数学模型以及定义在此数学模型上的一组操作 ADT有两个重要特征: 数据抽象 用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法) 数据封装 将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节 例如 抽象数据类型复数的定义: ADT Complex { 数据对象:D={e1,e2|e1,e2∈RealSet } 数据关系:R1={ | e1是复数的实数部分, | e2 是复数的虚数部分 } 基本操作: InitComplex( &Z, v1, v2 ) 操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和 v2的值。 DestroyComplex( &Z) 操作结果:复数Z被销毁。 GetReal( Z, &realPart ) 初始条件:复数已存在。 操作结果:用realPart返回复数Z的实部值。 GetImag( Z, &ImagPart ) 初始条件:复数已存在。 操作结果:用ImagPart返回复数Z的虚部值。 Add( z1,z2, &sum ) 初始条件:z1,z2是复数。 操作结果:用sum返回两个复数z1,z2的和值。 } ADT Complex 假设:z1和z2是上述定义的复数,则Add(z1,z2,z3)操作的结果将得到z3=z1+z2 抽象数据类型的描述方法 抽象数据类型可用(D,S,P)三元组表示 其中,D是数据对象,S是D上的关系集,P是对D的基本操作集。 ADT 抽象数据类型名 { 数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名 其中,数据对象和数据关系的定义用伪码描述,基本操作的定义格式为 基本操作名(参数表) 初始条件:〈初始条件描述〉 操作结果:〈操作结果描述〉 基本操作有两种参数:赋值参数只为操作提供输入值;引用参数以&打头, 除可提供输入值外,还将返回操作结果。 “初始条件”描述了操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。 “操作结果”说明了操作正常完成之后,数据结构的变化状况和应返回的结果。若初始条件为空,则省略之。 抽象数据类型的表示和实现 抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现 ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: c语言
 输入关键字,在本站1000多万海量源码库中尽情搜索: