北京 理工大学 C语言 程序设计 第十章结构、联合与枚举类型3

上传人:e****s 文档编号:241839062 上传时间:2024-07-29 格式:PPT 页数:11 大小:85KB
返回 下载 相关 举报
北京 理工大学 C语言 程序设计 第十章结构、联合与枚举类型3_第1页
第1页 / 共11页
北京 理工大学 C语言 程序设计 第十章结构、联合与枚举类型3_第2页
第2页 / 共11页
北京 理工大学 C语言 程序设计 第十章结构、联合与枚举类型3_第3页
第3页 / 共11页
点击查看更多>>
资源描述
第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型用链表处理不定长数组。用链表处理不定长数组。用链表处理不定长数组。用链表处理不定长数组。什么是链表?什么是链表?什么是链表?什么是链表?结构定义:结构定义:结构定义:结构定义:struct struct struct struct studentstudentstudentstudent int int int int num;num;num;num;float score;float score;float score;float score;struct struct struct struct studentstudentstudentstudent *next;next;next;next;链表的分类链表的分类链表的分类链表的分类 单向链表、双向链表等。单向链表、双向链表等。单向链表、双向链表等。单向链表、双向链表等。一、链表概述一、链表概述891018910189.589.5ffcdffcdff02ff0289103891039090fffdfffdffcdffcd89107891078585NULLNULLfffdfffd第八节第八节第八节第八节 链表根底链表根底链表根底链表根底第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型动态存储分配函数动态存储分配函数原型:原型:void*void*mallocmalloc(intint size)size)头文件:头文件:stdlibstdlib.h.h。功能:功能:分配分配sizesize个字节的存储区。个字节的存储区。返回值:返回值:分配成功,所分配区域的首返回地址。分配成功,所分配区域的首返回地址。分配失败,返回分配失败,返回 0 0。例如:例如:structstruct student student*psps;pspspsps=(=(=(=(structstructstructstruct student student student student*)mallocmallocmallocmalloc(sizeofsizeofsizeofsizeof(structstructstructstruct student student student student););););第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型释放内存函数释放内存函数原型:原型:void free(void*p)void free(void*p)头文件:头文件:stdlib.h stdlib.h。功能:释放功能:释放p p所指向的内存空间。所指向的内存空间。返回值:无返回值:无 。例如:例如:前面说明结构指针前面说明结构指针ps,ps,为其分配了内存,为其分配了内存,释放内存,那么写:释放内存,那么写:free(ps);free(ps);第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型创立链表的过程:创立链表的过程:按照结构的大小分配一块内存区域。按照结构的大小分配一块内存区域。将该区域的首地址赋给一个头指针。将该区域的首地址赋给一个头指针。继续分配一块内存区域。继续分配一块内存区域。将该区域的首地址分配给前一个结点的结点指针将该区域的首地址分配给前一个结点的结点指针变量。变量。继续上述过程,直到链表的尾。继续上述过程,直到链表的尾。二、创立链表二、创立链表第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型 ps f1aa 8019189.5NULL89107 85 NULL 89103 80 NULLps=(ps=(struct studentstruct student *)mallocmalloc(sizeof(sizeof(struct studentstruct student)scanf(“%ld,%fscanf(“%ld,%f,&ps-num,&ps-score);,&ps-num,&ps-score);ps-next=NULL;ps-next=NULL;p1p1=(struct student=(struct student*)mallocmalloc(sizeof(sizeof(struct studentstruct student)p1 ffe4 ps-next=p1ps-next=p1ffe4 ff4d 例例例例C11_701C11_701C11_701C11_701第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型headheadp1p1p2p2n=0headheadp1p1p2p2n=1p1p1n=2p2p2p1p1n=3p2p2NULLNULL例例例例C11_701aC11_701aC11_701aC11_701ap1=p2p1=p2=(struct student=(struct student*)mallocmalloc(sizeof(sizeof(struct studentstruct student)head=NULLhead=NULLp2-next=p1p2-next=p1p2-next=p1p2-next=p1第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型struct student*creat()struct student*creat()struct student*creat()struct student*creat()do do do do scanf(%ld,%d,&num,&a);scanf(%ld,%d,&num,&a);scanf(%ld,%d,&num,&a);scanf(%ld,%d,&num,&a);if(num!=0)if(num!=0)if(num!=0)if(num!=0)if(if(if(if(headheadheadhead=NULL)=NULL)=NULL)=NULL)headheadheadhead=tailtailtailtail;else else else else tailtailtailtail=tailtailtailtail-next;-next;-next;-next;tail-num=num;tail-num=num;tail-num=num;tail-num=num;tail-score=a;tail-score=a;tail-score=a;tail-score=a;tail-next=(struct student*)malloc(LEN);tail-next=(struct student*)malloc(LEN);tail-next=(struct student*)malloc(LEN);tail-next=(struct student*)malloc(LEN);else tail-next=NULL;else tail-next=NULL;else tail-next=NULL;else tail-next=NULL;while(num!=0);while(num!=0);while(num!=0);while(num!=0);return(head);return(head);return(head);return(head);第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型 if(head=NULL)head=tail;if(head=NULL)head=tail;if(head=NULL)head=tail;if(head=NULL)head=tail;else else else else tail=tail-next;tail=tail-next;tail=tail-next;tail=tail-next;tail-num=num;tail-score=a;tail-num=num;tail-score=a;tail-num=num;tail-score=a;tail-num=num;tail-score=a;tail-next=(struct student*)malloc(LEN);tail-next=(struct student*)malloc(LEN);tail-next=(struct student*)malloc(LEN);tail-next=(struct student*)malloc(LEN);headheadtailtailtailtail第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型 从头结点开始,到尾结点结束。从头结点开始,到尾结点结束。尾结点的特征:其指向为空。尾结点的特征:其指向为空。三、输出一个链表三、输出一个链表第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型l删除一个结点,删除一个结点,既让上一个结点既让上一个结点指向下一个结点。指向下一个结点。三、在链表中删除一个节点三、在链表中删除一个节点f1aa f1aa 801918019189.589.5ffe4ffe489107 89107 85 85 NULL NULL 89103 89103 80 80 ff4d ff4d头指针头指针 psps(ps-1)-next=ps-next(ps-1)-next=ps-next801918019189.589.5ffe4ffe4ff4d ff4d 第十章第十章第十章第十章 结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型结构、联合与枚举类型l插入一个结点,插入一个结点,既插入处前一个既插入处前一个结点,指向结点,指向新结新结点点,新结点新结点指向指向一个结点。一个结点。四、在链表中插入一个节点四、在链表中插入一个节点f1aa f1aa 801918019189.589.5ffe4ffe489107 89107 85 85 NULL NULL 头指针头指针ff4d ff4d 89103 89103 80 80 ff4d ff4d pspsffdd ffdd ffdd ffdd ps-next=head-next;ps-next=head-next;ps=(struct student*)malloc(sizeof(struct studet);ps=(struct student*)malloc(sizeof(struct studet);head-next=ps-next;head-next=ps-next;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!