- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 结构体与共用体 8.1 结构体的声明和结构体变量定义 8.2 结构体数组与结构体指针 8.3 结构体与函数 8.4 链表及其应用 8.5 共用体 8.6 枚举型和自定义类型 8.7 类型定义符typedef 8.8 位段 8.9 结构体的综合应用 本章学习内容 结构体的概念 结构体类型的定义 结构体变量 结构体数组 指向结构体类型数据的指针 共用体 枚举类型 本章学习目标 理解结构体的概念 掌握结构体定义的方法 掌握结构体变量的定义方法 掌握结构体变量的引用和初始化方法 掌握结构体数组及其应用 掌握指向结构体类型的指针 掌握指针处理链表的方法 理解共用体的定义 了解枚举类型和自定义类型 1. 概述 — 什么是结构体 引例 结构体 是一种构造数据类型 用途: 把不同类型的数据组合成一个整体-------自定义数据类型 2. 结构体类型的定义 语法格式 实例 3. 结构体类型变量 定义 初始化 引用 相关说明 方法一: 使用已经定义好的结构体类型定义变量 方法二: 在定义结构体类型的同时定义变量 方法三: 直接定义结构体变量 一般形式: 实例: 注意事项: 不能将结构体变量作为一个整体进行输入输出 不能将两个结构体变量进行整体比较 可以将一个结构体变量整体赋值给另一个结构体变量 结构体嵌套时逐级引用 4. 结构体数组 定义 初始化 数组元素的访问 应用举例 5. 指向结构体类型数据的指针 指向结构体变量的指针 指向结构体数组的指针 结构体变量和指向结构体的指针作函数参数 6. 用指针处理链表 链表的基本知识 处理链表常用的函数 链表的基本操作 建立动态链表 查找链表中的结点 删除链表中的结点 插入结点到链表中 创建链表:从无到有地建立起一个链表 查找:按给定的结点索引号或检索条件,查找某个结点。如果找到指定的结点,则称为检索成功;否则,称为检索失败 插入:在结点ki-1与ki之间插入一个新的结点k,使表的长度增1,且逻辑关系发生如下变化 插入前,ki-1是ki的前驱,ki是ki-1的后继; 插入后,新插入的结点k’成为ki-1的后继、ki的前驱。 删除:删除结点ki,使链表的长度减1,且ki-1、ki和ki+1结点之间的逻辑关系发生如下变化: 删除前:ki是ki+1的前驱、ki-1的后继; 删除后:ki-1成为ki+1的前驱,ki+1成为ki-1的后继。 创建链表 链表的创建过程有以下几步: 定义链表的数据结构。 定义头结点指针,置指针域为空,表示创建了一个空表。 申请一个结点存储单元。 将新结点的指针成员赋值为空。若是空表,将新结点连接到表头;若是非空表,将新结点接到表尾或者合适的位置上。 判断一下是否有后续结点要接入链表,若有转到(3),否则结束。 尾插法建立单链表 特点:头指针固定不变,新产生的结点总是链接到链表的尾部。 操作步骤: 设head为链表头,last为链表尾结点,head=last=NULL; 生成新结点,由p指针指示,并将新结点的地址域清空: p-next=NULL; 如果head为NULL,则 head=p; 否则 last-next=p; last=p; 重复上面4步,继续建立新结点 头插法建立单链表 特点:新产生的结点作为新的链表头插入链表。 操作步骤: head=NULL; 生成新结点,指针变量p指向该结点; p-next=head; head=p; 重复上面2步,继续生成下一个链表结点。 输出链表 链表的输出过程有以下几步 找到表头。 若是非空表,输出结点的值成员,是空表则退出。 跟踪链表的增长,即找到下一个结点的地址。 转到(2)。 输出链表结点 操作步骤: 得到链表头结点的地址?head; 指针变量p=head; 输出p所指结点的成员值; p后移一个结点,p=p-next; 重复上面两步,直到链表为空。 统计链表结点的个数 从表头开始访问到表尾,逐个统计出结点数目。 查找链表的某个结点 从链表头开始访问链表,查找符合某个条件的结点 操作步骤: q指针指向新结点,i为已访问过的结点数; p=head,r指向p结点的前一个结点; i++,r=p,p=p-next,p结点往前移动一个结点; 若in且p!=NULL,则重复(3) 若i==0,则链表为空,没有结点,q结点作为链表的第1个结点插入:q-next=head,head=q; 若in且p==NULL,则链表不足n个,将q结点插入到链表尾r结点之后:r-next=q,q-next=NULL; 否则,将q结点插入到第n个结点之后,即插入到r结点与p结点之间:r-next=q,q-next=
文档评论(0)