- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.1 结构体的定义及引用 7.2 结构体变量的定义和初始化 7.4 结构体数组与程序举例 7.6 结构与链表 2、建立链表(法一) 2、建立链表(法二) 3、遍历一个链表 4、插入结点 在链表中插入一个新结点,将结点 t 插入到结点 p 之后。 7.7 联合(共用体) 本章作业 例2:从Student结构数组中更新某一给定学号的记录,若 成功则返回1,否则将记录插入到数组未尾并将数组 长度加1,返回0。 分析: 函数名update, 函数类型可为整型或布尔型。 参数:结构数组:Student s[]或Student *P, 指针参数传递 数组长度n:引用类型,带回长度值。 存储更新值的结构变量x:const 引用类型,调用过程中不 须修改; 注: x为引用类型,可以直接访问实参空间,不须重新分配内存。 3、用指向结构体变量的指针(或数组)作参数: 将结构体变量(或数组)的地址传给形参,如 Void fun(Student *p, n); Student x,*p=x; fun( p, 5 ); 例3:从Student结构数组中查找学号等于给定值的记录, 若查找成功返回该元素的地址,否则返回空。 分析: 函数名search, 函数返回值类型为结构指针Student *, 即被检索元素的地址。 程序:P209 函数定义: Student * search(Student s[],int n,const Student x); 调用: search(a,n,x); 函数定义:int update( Student s[], int n, const x ); 调用: update(a,n,x); 程序:P208 思路: 从数组s第一个元素起顺序查找,若找到s[i].num与x.num相等,则用x更新 s[i]并返回1,否则,将x插入到s[n]的位置,将n增1后返回0。 头指针:指向第一个结点的指针,如 f 指针; 后继结点:每个结点指针域所指向的结点 前驱结点: 尾结点:指针域为空 结构中的指针成员可以指向本身结构类型,这种类型的结构变量称为结点,每个结点的指针成员指向下一个结点,从而形成链表。 struct IntNode { int data; IntNode* next;}; 1、几个概念: 数据域:用来存储数据 指针域:用来存储下一个结点的地址 链表中的结点通常通过动态分配产生IntNode* p=new IntNode; 向表头插入新结点void create1(IntNode * f, int n) { f=NULL; while(n--0) { IntNode* p=new IntNode; cinp-data; p-next=f; f=p; }} f p f=0 f=0 72 56 48 p p p f f f p p p f f f 83 83 0 向表尾插入新结点: void create2(IntNode*f, int n) { //建立表头结点 f=new IntNode; cinf-data; IntNode *p=f; //p指向表头结点 for (int i=1;i=n-1;i++){ p-next=new IntNode; p=p-next; cinp-data; } p-next=NULL; } f 48 56 72 83 p p p p 83 p p p 0 void print(IntNode*f) { IntNode* p=f; while ( p!=NULL ) { coutp-data‘ ’; p=p-next; } coutendl; } 链表具有顺序存取特性:当访问一个链表时,必须从头指针出发顺序进行。 void main() { IntNode* head; create1(head, 5); //返回表头结点指针head print(head);}输入 1 2 3 4 5 输出 5 4 3 2 1
您可能关注的文档
最近下载
- 电能“发、输、变、配、用”五环节简介.pptx VIP
- 先进算力中心建设规划方案.docx VIP
- 安装钳工基础知识全集课件.ppt VIP
- 部编版六年级语文上册第三单元 习作_____让生活更美好 课件(共32张PPT).pptx VIP
- 医疗器械唯一标识管理制度(UDI).docx VIP
- 感术行动专项实施方案.docx VIP
- 企业案例广州超算中心 企业案例广州超算中心、项目建设规划、项目需求分析 1.3项目建设规划.docx VIP
- 音频处理软件:Adobe Audition二次开发_17.社区资源与支持.docx VIP
- 数控铣床第一章 数控铣床概述.ppt VIP
- 偏差报告单【范本模板】.doc VIP
文档评论(0)