




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十一章 结构类型及其他构造类型 本章学习内容 本章首先介绍了结构体类型和结构 体类型变量和结构体类型数组的定义与 使用方法。然后,介绍了指向结构体类 型数据的指针的使用方法。最后,介绍 了静态链表和动态链表。并通过设计一 个学生信息管理系统具体介绍了对动态 链表进行新建、插入结点、删除结点、 添加结点以及查询等操作的程序设计。 本章学习目的 使学生学会声明结构体类型和定 义结构体类型变量与结构体数组变量 的方法,掌握指向结构体类型数据的 指针的使用方法。掌握动态链表的基 本概念,并能设计程序对动态链表进 行新建、插入结点、删除结点、添加 结点以及查询等操作。 本章学习重点和难点 重点和难点: 1结构体数组的程序设计。 2动态链表的程序设计。 第十一章 结构类型及其他构造类型 11.1 结构类型 11.2 定义结构体类型变量的方法 11.3 结构体变量的引用 11.4 结构体变量的初始化 11.5 指针数组 11.1 结构类型 声明一个结构体类型的一般形式: struct 结构体名 成员列表; 其中,结构体名用做结构体类型的标志 。 成员类型声明的一般形式: 类型名 成员名; 11.1 结构类型 则一般形式为: struct 结构体名 类型名 成员名1; 类型名 成员名2; 类型名 成员名n; ; 11.1 结构类型 例如: struct student int num; char name20; char sex; int age; float score; char addr30; ; 11.2 定义结构体类型变量的方 法 1先声明结构体类型再定义变量名 11.2 定义结构体类型变量的方 法 一般形式: 结构体类型 变量列表; 11.2 定义结构体类型变量的方 法 2在声明结构体类型的同时定义变量 struct 结构体名 成员列表变量列表; 11.2 定义结构体类型变量的方 法 3直接定义结构体类型变量 一般形式: struct 成员列表 变量列表; 11.2 定义结构体类型变量的方 法 说明: (1)类型与变量是不同的2个概念。只能对变量赋值 、存取或运算,而不能对一个类型赋值、存取或运 算。在编译时,对类型是不分配空间的,只对变量 分配空间。 (2)对结构体中的成员(即“域”或称为“字段”),可 以单独使用,它的作用与地位相当于简单变量。 (3)成员也可以是一个结构体变量。 (4)成员名可以与程序中的变量名相同,二者不代表 同一对象。例如程序中可以另定义一个变量num, 它与struct student中的sum是两回事,互不干扰。 11.3 结构体变量的引用 定义了结构体变量后,就可以引用这个 变量,但应遵循以下规则: (1)不能将一个结构体变量作为一个整体进 行输入和输出。只能对结构体变量中的各个 成员分别进行输入和输出。 11.3 结构体变量的引用 (2)如果成员本身又属于一个结构体类型, 则要用若干个成员运算符,一级一级地找到 最低一级的成员。只能对最低一级的成员进 行赋值、存取或运算。 11.3 结构体变量的引用 (3)对结构体变量的成员可以象简单变量一 样进行各种运算,即根据类型决定可以进行 的运算。 11.3 结构体变量的引用 (4)可以引用结构体变量成员的地址,也可 以引用结构体变量的地址。 11.4 结构体变量的初始化 例1 对结构体变量初始化。 11.5 结构体数组 11.5.1 定义结构体数组 11.5.2 初始化结构体数组 11.5.1 定义结构体数组 结构体数组每一个数组元素都是一 个结构体类型的数据,它们都分别包括各个 成员项。 11.5.2 初始化结构体数组 与其他类型的数组一样,对价格数组可以初始化。如: struct student int num; char name20; char sex; int age; float score; char add30; stu3=10101,“Li Lin“,M,18,87.5,“103 Beijing Road“, 10102,“Zhang Fen“,M,19,99,“130 Shanghai Road“, 10104,“Wang Min“,F,20,78.5,“1010 Zhongshan Road“; 11.6 指向结构体类型数据的指 针 11.6.1 指向结构体变量的指针 11.6.2 指向结构体类数组的指针 11.6.3 用结构体变量和指向结构体的指 针作函数的参数 11.6 指向结构体类型数据的指 针 结构体变量的指针一个指针结构体 变量的指针,就是该变量所占据的起始地址 。 11.6 指向结构体类型数据的指 针 可以设一个指针变量,用来指向一个结 构体变量,此时该指针变量的值是结构体变 量的起始地址。指针变量也可以用来指向结 构体数组中的元素。 11.6.1 指向结构体变量的指针 例1 指向结构体变量的指针应用。 11.6.1 指向结构体变量的指针 以下3种形式是等价的: (1)结构体变量.成员名 (2)(*p).成员名 (2)p-.成员名 其中,-称为指向运算符。 11.6.2 指向结构体类数组的指 针 例2 指向结构体类数组的指针应用。 11.6.3 用结构体变量和指向结 构体的指针作函数的参数 将一个结构体变量的值传递给另一个函数 ,有3种方法: (1)用结构体变量的成员作参数。属于“传值”。 (2)用结构体变量作实参。属于“传值”。 (3)用指向结构体变量或数组的指针作实参。属 于“传地址”。 11.6.3 用结构体变量和指向结 构体的指针作函数的参数 例3 有一个结构体变量stu,内含学生学号、 姓名和3门课程的成绩。要求在main函数中 赋值,在另一个函数print中将它们打印输出 。 11.6.3 用结构体变量和指向结 构体的指针作函数的参数 例4 使用指向结构体变量的指针作实参,完成 上例。 11.7 用指针处理链表 11.7.1 链表概述 11.7.2 简单链表 11.7.3 处理动态链表所需的函数 11.7.4 建立动态链表 11.7.5 输出链表 11.7.6 对链表的删除操作 11.7.7 对链表的插入操作 11.7.8 对链表的综合操作 11.7.1 链表概述 链表是一种常见的重要的数据结构。它 是动态地进行存储分配的一种结构。 11.7.2 简单链表 下面通过一个例子来说明如何建立和输出 一个简单链表。 例1 建立一个上图所示的简单链表,它由3个 学生数据的结点组成。输出各结点中的数据 。 11.7.2 简单链表 例中所有结点都是在程序中定义的,不 是临时开辟的单元,也不能用完后释放空间 ,这种链表称为静态链表。 11.7.3 处理动态链表所需的函 数 如何使链表结构动态的分配存储单元,在 需要时才开辟一个结点的存储单元?怎样动 态开辟和释放存储单元呢?C语言编译系统 的库函数提供了以下有关函数。 11.7.3 处理动态链表所需的函 数 1malloc函数 函数原型为: void * malloc(unsigned int size); 功能:在内存的动态存储区中分配一个长度为 size的连续空间。函数的值是一个指向分配 域起始地址的指针,类型为void。如果函数 未能成功执行,例如内存空间不足,则返回 空指针NULL。 11.7.3 处理动态链表所需的函 数 2calloc函数 函数原型为: void * calloc(unsigned n,unsingned size); 功能:在内存的动态存储区中分配n个长度为 size的连续空间。函数返回一个指向分配域 起始地址的指针,类型为void。如果分配不 成功,则返回空指针NULL。 11.7.3 处理动态链表所需的函 数 3free函数 函数原型为: void * free(void *p); 功能:释放由p执行行的内存区,使这部分内 存区能被其他变量使用。P是最近一次调用 calloc或malloc函数时返回的值。free函数无 返回值。 11.7.4 建立动态链表 所谓建立动态链表是指在程序执行过程中 从无到有地建立起一个链表,即一个一个地开辟 结点和输入各结点数据,并建立起前后相链的关 系。 11.7.5 输出链表 输出链表就是将各结点的数据依次输出。 例3 编写一个输出链表的函数print。 11.7.6 对链表的删除操作 例4 编写一个删除动态链表中指定结点的函数 。 11.7.7 对链表的插入操作 例5 编写一个插入结点的函数insert。设各个结 点是按学号成员项num的值由小
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识管理分享与交流计划模板
- 成都市 房屋征收 合同5篇
- 2025年国电“学安全、反违章、防事故”学习考试活动题库资料含答案
- 2025年物业服务合同风险防范合同范本
- 2025年广西壮族自治区文化和旅游厅直属事业单位招聘考试笔试试题(附答案)
- 职业道德考试自测题及答案
- 事业基金考试题库及答案
- 口腔诊所专业知识考试题及答案
- 软件测试笔试题目及答案训练题
- 驻马店中考试卷数学题及答案
- 临床医学循环系统试题及答案2025年版
- 水磨钻施工安全教育培训课件
- 2025下半年新疆兵团招聘事业单位工作人员2398人考试模拟试题及答案解析
- 2025年广西林业局考试真题附答案
- 户外鱼池用电安全知识培训课件
- 钢筋工程拆除专项方案(3篇)
- 中国资源循环集团招聘笔试题库2025
- 新版2026统编版小学道德与法治三年级上册 第4课《 科技力量大》第1课时 科技改变生活和科技改变观念 教学课件
- 实验室生物安全管理制度及流程
- 你不懂咖啡课件
- 危险物品储存安全隐患排查整治表
评论
0/150
提交评论