用户建立的数据类型(1).ppt_第1页
用户建立的数据类型(1).ppt_第2页
用户建立的数据类型(1).ppt_第3页
用户建立的数据类型(1).ppt_第4页
用户建立的数据类型(1).ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

第9章 用户建立的数据类型 9 4用指针处理链表 9 4 1链表概述链表是一种常见的重要的数据结构 是动态地进行存储分配的一种结构 链表的组成 头指针 存放一个地址 该地址指向一个元素结点 用户需要的实际数据和链接节点的指针 图11 10 用结构体建立链表的结点 例 structstudent intnum floatscore structstudent next 其中成员num和score用来存放结点中的有用数据 用户需要用到的数据 next是指针类型的成员 它指向structstudent类型数据 图9 11 9 4 2建立简单的静态链表 例9 7建立有3个结点的简单链表 并输出各结点中的数据 include defineNULL0structstudent intnum floatscore structstudent next voidmain structstudenta b c head p p head a num 99101 a score 89 5 b num 99103 b score 90 c num 99107 c score 85 head do printf d 5 1f n p num p score p p next while p NULL 9 4 3建立动态链表 所谓建立动态链表是指在程序执行过程中从无有地建立起一个链表 即一个一个地开辟结点和输入各结点数据 并建立起前后相链的关系 例9 8写一函数建立一个有3名学生数据的单向动态链表 建立链表的函数如下 include include defineNULL0 令NULL代表 用它表示 空地址 defineLENsizeof structstudent 令LEN代表struct student类型数据的长度structstudent intnum floatscore structstudent next intn n为全局变量 本文件模块中各函数均可使用它 structstudent creat structstudent head p1 p2 n 0 p1 p2 structstudent malloc LEN scanf d f head NULL while p1 num 0 学号为0建链表结束 n n 1 if n 1 head p1 elsep2 next p1 前后结点连接起来p2 p1 p1 structstudent malloc LEN 新结点scanf d f p2 next NULL return head NULL 9 4 4输出链表 首先要知道链表第一个结点的地址 也就是要知道head的值 然后设一个指针变量p 先指向第一个结点 输出 所指的结点 然后使 后移一个结点 再输出 直到链表的尾结点 例 1 9编写一个输出链表的函数print voidprint structstudent head structstudent p printf nNow These drecordsare n n p head if head NULL do printf ld 5 1f n p num p score p p next while p NULL 9 5共用体 9 5 1 什么是共用体使几个不同的变量共占同一段内存的结构称为 共用体 类型的结构 一般形式为 union共用体名 成员表列 变量表列 例如 uniondatauniondata inti inti charch 或charch floatf floatf a b c uniondataa b c 变量a的存储示意图 共用体和结构体的比较 结构体变量所占内存长度是各成员占的内存长度之和 每个成员分别占有其自己的内存单元 共用体变量所占的内存长度等于最长的成员的长度 例如 上面定义的 共用体 变量 各占 个字节 因为一个实型变量占 个字节 而不是各占 个字节 2 共用体变量的引用方式只能引用共用体变量中的成员 例如 前面定义了a b c为共用体变量a i 引用共用体变量中的整型变量 a ch 引用共用体变量中的字符变量 a f 引用共用体变量中的实型变量 3 共用体类型数据的特点 P271 1 同一个内存段可以用来存放几种不同类型的成员 但在每一瞬时只能存放其中一种 而不是同时存放几种 2 共用体变量中起作用的成员是最后一次存放的成员 在存入一个新的成员后原有的成员就失去作用 共用体变量的地址和它的各成员的地址都是同一地址 不能对共用体变量名赋值 不能把共用体变量作为函数参数 共用体类型可以出现在结构体类型定义中 也可以定义共用体数组 反之 例9 10设有若干个人员的数据 其中有学生和教师 学生的数据中包括 姓名 号码 性别 职业 班级 教师的数据包括 姓名 号码 性别 职业 职务 可以看出 学生和教师所包含的数据是不同的 现要求把它们放在同一表格中 9 6枚举类型 枚举 将变量的值一一列举出来 变量的值只限于列举出来的值的范围内 声明枚举类型用enum 例如 下面是定义名为weekday的枚举类型 enumweekday sun mon tue wed thu fri sat 定义枚举类型的变量 enumweekdayworkday week day 或 enumweekday sun mon tue wed thu fri sat workday week day 则workday week day的变量值只能是sun到sat之一 9 7用typedef命名类型 用typedef声明新的类型名来代替已有的类型

温馨提示

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

评论

0/150

提交评论