C语言程序设计第9章ppt课件.ppt

C语言程序设计第9章ppt课件.ppt

ID:59397331

大小:2.43 MB

页数:41页

时间:2020-09-20

C语言程序设计第9章ppt课件.ppt_第1页
C语言程序设计第9章ppt课件.ppt_第2页
C语言程序设计第9章ppt课件.ppt_第3页
C语言程序设计第9章ppt课件.ppt_第4页
C语言程序设计第9章ppt课件.ppt_第5页
资源描述:

《C语言程序设计第9章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计实例教程9.2链表C语言程序设计实例教程第9章结构体和共用体动态开辟存储空间的相关函数的使用单向链表的建立方法链表的基本操作的相关函数的使用本节要点实例48单向链表的建立——输出五名同学的信息【实例任务】定义一个结构体类型的数组,然后将这五个数组元素连接起来生成一个链表,通过每个结构体类型数组元素的指针成员输出每名同学的信息。程序运行结果如图9-6所示。图9-6程序运行结果实例48单向链表的建立——输出五名同学的信息【实例任务】#include"stdio.h"#include"st

2、ring.h"typedefstructstudent{charname[20];intnum;structstudent*next;}ST;main(){STa[5],*head,*p;/*定义a[5]是有5个元素的结构体类型的数组*/inti;printf("请依次输入五名同学的姓名和学号:");实例48单向链表的建立——输出五名同学的信息【实例任务】for(i=0;i<5;i++){gets(a[i].name);scanf("%d",&a[i].num);}head=a;/*头指针he

3、ad指向第一个数组元素*/a[0].next=a+1;/*将第1个数组元素连接到第0个数组元素的后面*/a[1].next=a+2;/*将第2个数组元素连接到第1个数组元素的后面*/a[2].next=a+3;a[3].next=a+4;a[4].next='';/*最后一个数组元素的指针成员不再有任何指向,赋值为''*/实例48单向链表的建立——输出五名同学的信息【实例任务】p=head;/*p先指头指针*/printf("请输出这五名同学的个人信息:");for(i=0;i<5;i

4、++){printf("%15s",p->name);printf("%10d",p->num);p=p->next;}/*通过每个结点的next成员值,实现了链表结点的后移*/getch();}实例48单向链表的建立——输出五名同学的信息【相关知识】1.结构体的成员可以为指向本结构体的指针结构体类型定义时,可以为各种固有的类型。对于构造结构体类型时,可以为指向本结构体类型的指针。实例中定义结构体类型时的next成员,是基类型为指向自身的指针变量,这样可以通过这个变量记录下一个相同类型的结构体

5、类型变量或数组元素,从而逻辑上连接起来,生成一个链表。实例48单向链表的建立——输出五名同学的信息2.单向链表的建立实例中,基于结构体类型构造时含有一个指向自身的指针变量,通过这个指针变量,将5个数组元素连接起来,从而通过这个指针成员来引用结构体类型数组元素的各个成员。其链表形式如图9-7所示。图9-7链表的构成实例48单向链表的建立——输出五名同学的信息连接到链表的每个元素,在链表中称为结点。这些结点在存储空间的地址可以连续,也可以不连续,都是通过指针域连接到一起。单向链表都有一个头指针,它指向

6、链表的第一个结点,这个结点也称为链表的头结点。链表的最后一个结点为尾结点,因其指针域不再有任何指向,其指针域赋值为NULL(空),通常我们赋值为''。实例中,a[4]元素的指针赋值为''。实例49动态链表的建立及常用操作——输出学生的信息【实例任务】动态开辟存储空间,将新建立的各个结点依次链接到链表中,然后按顺序输出学生的学号和姓名信息。程序的运行结果如图9-8所示。图9-8程序运行结果实例49动态链表的建立及常用操作——输出学生的信息【程序代码】#include"stdio.h"#inc

7、lude"string.h"#include"stdlib.h"typedefstructstudent{intnum;charname[20];structstudent*next;}ST;/*为结构体命别名为ST*/main(){ST*head,*p,*s,new;head='';/*初始化头指针,或用语句head=NULL;*//*创建一个空链表,并将头指针各参数初始化*/head=malloc(sizeof(ST));/*为头指针动态开辟存储空间*/实例49动态链表的建立及常用操作——

8、输出学生的信息【程序代码】if(head==NULL){printf("没有足够的内存!请返回!");return;}head->next=NULL;head->num=0;/*在链表中插入结点*/p=head;/*p先指向头指针*/实例49动态链表的建立及常用操作——输出学生的信息【程序代码】do{printf("请输入学生的学号为:");scanf("%d",&new.num);if(new.num==0)/*学号为0时循环结束*/break;printf("请输入学生的姓

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。