数据结构预备知识PPT课件.ppt_第1页
数据结构预备知识PPT课件.ppt_第2页
数据结构预备知识PPT课件.ppt_第3页
数据结构预备知识PPT课件.ppt_第4页
数据结构预备知识PPT课件.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

预备知识 基础 已学过 C程序设计 这门课程 并掌握数据类型 表达式 基本控制结构 顺序 分支和循环 数组 指针 函数 以及输入输出等内容 数据结构课程需要扩充的知识 1C 的不同的表示2自定义数据类型 结构体 枚举类型 联合体 3复习函数 介绍函数重载4复习指针 介绍动态内存分配 1 1C 的不同的表示 1 输入输出语句原来使用scanf 和printf 函数 现输出使用输出流对象cout和插入符 例 cin n cin a b 键盘输入时 两数之间用空格隔开 注意 以上对象和符号在头文件iostream h中定义 所以 需要在源代码文件的开始包含它 2 1C 的不同的表示 2 简单的I O格式控制endl插入换行符 并刷新流setprecision int 设置浮点数的小数位数 包括小数点 setw int 设置域宽例cout 请输入一个整数 endl a 3 1415926 cout setprecision 3 a endl name 黄俊民 cout setw 12 name 3 1C 的不同的表示 3 嵌入的头文件C程序若包含输入输出语句 需要在主函数的前面嵌入 include iostream h C 则需要 include iostream usingnamespacestd 4 1C 的不同的表示 4 变量赋初值inta 3 可以写成inta 3 5 2自定义数据类型 2 1typedef声明为一个数据类型定义一些有具体意义的别名 以后可将别名当作数据类型使用 如 typedefdoublearea volume areaa volumev a和v还是浮点型数据 但程序可读性增强了 6 2自定义数据类型 2 2枚举类型 enum 这种类型也是为了程序的可读性 具体做法是将变量需要的取值一一列举出来 便构成了一个枚举类型 枚举类型的声明形式如下 enum枚举类型名 变量值列表 例如 enumweekday sun mon tue wed thu fri sat enummonyh Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 7 2 2枚举类型 enum 枚举类型 enum 枚举类型应用说明 对枚举元素按常量处理 不能对它们赋值 例如 不能写 sun 0 Jan 1 枚举元素具有缺省值 它们依次为 0 1 2 也可以在声明时另行指定枚举元素的值 如 enumweekday sun 7 mon 1 tue wed thu fri sat 枚举值可以进行关系运算 整数值不能直接赋给枚举变量 如需要将整数赋值给枚举变量 应进行强制类型转换 8 2 2枚举类型 enum 枚举类型 enum 定义枚举类型变量 enumweekdayday id enummonthmonth id 也可weekdayday id monthmonth id 9 枚举类型 enum 举例 口袋中有红 黄 蓝 白 黑五种颜色的球若干个 每次从口袋中取出3个不同颜色的球 问有多少种取法 分析 由于球只能是五种颜色之一 故可用枚举类型表示球的颜色 设取出的球为i j k 根据题意 i j k分别可以有五种取值 且i j k 可以用穷举法 逐个检验每一种可能的组合 从中找出符合要求的组合并输出 10 includevoidmain enumcolor red yellow blue white black 枚举类型enumcolorpri intn loop i j k charc n 0 for i red i black i for j red j black j if i j 前两个球不同 for k red k black k 11 if k i 12 switch pri casered cout red break caseyellow cout yellow break caseblue cout blue break casewhite cout white break caseblack cout black break default break cout endl cout total n endl 13 2自定义数据类型 2 3结构类型将数据对象组织在一起 成为一种组合的数据 对于程序设计十分有用 以前我们学习过 数组 就是一种组合的数据类型 但是 组成数组的元素 它们的类型都是相同的 结构类型是一种将不同类型的数据对象组织在一起的数据类型 具体元素及其组织由用户自己定义 14 2 3结构类型 定义结构类型struct结构名 数据类型成员名1 数据类型成员名2 数据类型成员名n 如structplanet charname MAXSIZE floatdiameter orbitrad 星球直径和轨道半径 15 2 3结构类型 定义结构类型数据struct结构名数据名 如structplanetpln 或者typedefstructplanetPLANET PLANETpln 使用结构类型数据数据名 成员元素名如cout pln diameter pln orbitrad 16 2 3结构类型 定义指向结构类型数据的指针struct结构名 指针名 如structplanetpln ppln 或者typedefstructplanetPLANET PLANETpln ppln 使用结构类型数据指针名 成员元素名如果ppln 17 例将月日数转换为年天数的C函数 staticintday tab 2 13 0 31 28 31 30 31 30 31 31 30 31 30 31 0 31 29 31 30 31 30 31 31 30 31 30 31 structdate 定义结构类型intday month year intday of year structdate pd 函数inti day leap day pd day leap pd year 4 0 18 2020 1 7 19 2 4联合 共同体 几个不同类型的数据共用同一组内存单元 这种数据类型称为联合 union 联合的定义union联合名 数据类型1成员1 数据类型2成员2 数据类型n成员n 联合数据定义union联合名数据变量名 20 2 4联合 联合数据变量的引用 联合数据变量名 成员名例uniondata inti floatf charc uniondatax 数据变量x有4个字节 它的最大成员空间为它的存储空间大小 若使用x i 则2个字节 若使用x f 则4个字节 若使用x c 则1个字节 21 设计一个既能填入学生数据 又能用于教师的数据类型 并用于实际处理 structrecord intnumber charname 20 charjob 学生s 教师tunion intclass 学生填班级号charposition 12 教师填职务 category person 2 22 程序中可使用下列形式的语句 intn i for i 0 i person i number person i name person i job if person i job s cin person i category class elseif person i job t cin person i category position elsecout inputerror endl 23 3 复习函数 介绍函数重载 1 函数的定义函数返回值类型函数名 形式参数表 语句序列 其中 若无返回值 函数类型为void 若无形式参数 形式参数表为void 否则 形式参数表为 type1name1 type2name2 typennamen 24 1 函数的定义 假如是main 函数 也可有形式参数和返回值 其中 返回值将被传递给操作系统 而带有形式参数的主函数 具体写成 main intargc char argv 语句序列 argc表示参数个数argv i 0 i argc 1 指向存储参数的字符串注意 c语言中的main 函数 常用void来定义类型 但在c 中 则使用int来定义类型 对于运行正常 能够执行到程序的逻辑结尾处 则return0 25 2 函数的调用 调用其他函数的函数 称为主调函数 被其他函数调用的函数 称为被调函数 在调用函数前 需声明函数原形 然后方可调用 函数原形的形式 函数返回值类型被调函数名 形式参数表 函数调用 函数名 实际参数表 其中 实际参数表中的参数个数与函数原形的形参个数相同 类型相符 并用逗号分隔 假若被调函数有返回值 它可出现在表达式中 26 3 函数的参数传递 值调用函数调用时 给被调函数的形参分配空间 将实参的值传递给形参 被调函数执行完毕 形参的值不影响实参 指针作为函数参数主调函数的实参指针和被调函数的形参指针指向共同的数据内存空间 被调函数直接处理主调函数的数据 主调函数直接得到被调函数的结果 这样实现参数双向传递 27 3 函数的参数传递 引用调用引用名是某个变量的别名 在被调函数中 将引用作为形参 主调函数的变量名和被调函数的引用名在调用时实现对应 它们表示的是相同存储空间 存放变量值 的符号地址 在被调函数中任何对引用的操作 实际上就是对那个存储空间中的值的操作 最后都将在主调函数的实参上反映出来 具体格式 返回类型函数名 参数类型 引用名 28 例两个变量的值互换 1 指针参数 2 引用参数 includevoidswap int p1 int p2 inttemp temp p1 p1 p2 p2 temp intmain inti 3 j 5 swap 29 includevoidswap int 30 4 函数重载 两个以上的函数 使用相同的函数名 但是它们的形式参数的个数或者类型不同 当调用函数时 编译器根据实参和形参的类型及个数的最佳匹配 自动确定调用某一个函数 这就是函数的重载 例如intadd intx inty floatadd floatx floaty intadd intx inty intz 31 4复习指针 介绍动态内存分配 1 指针变量的定义指针变量用于存放内存单元的地址 定义指针变量的形式 数据类型 指针变量名 例inta 3 b 2 c int pa pb 2 与地址有关的运算符 和 32 4复习指针 介绍动态内存分配 指针与数组例intarray 10 int pa pb x i pa array pa指向array 0 pa就是array 0 pb pa 3 pb指向array 3 pb就是array 3 x pa pb 即x array 0 array 3 33 4复习指针 介绍动态内存分配 动态内存分配在定义数组时 C或C 要求明确元素的个数 但是 在一些具体问题上 元素个数往往难以确定 因此需要在程序执行过程中动态地给变量分配内存 在C中有这样的函数 动态存储分配函数void malloc size 动态内存释放函数voidfree void memblock 例int pi pi int malloc sizeof int free pi 34 3 动态内存分配 相应地 在C 中动态内存分配将更加简单 它使用两个运算符new和delete new的功能是动态分配内存 delete的功能是释放指定的内存空间 例int pi pi newint pi指向存放int类型值的存储单元以上两

温馨提示

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

评论

0/150

提交评论