- 1、本文档共322页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
了解结构体指针、用指针处理链表 为避免浪费空间,C语言提供一种动态的数据结构。它没有固定大小,根据需要随时开辟存储单元,用完后随时释放。线性链表就是动态地进行存储分配的一种数据结构。 任务二 了解结构体指针、用指针处理链表 1. 了解C语言的结构体指针的定义与使用。 2. 学会用指针处理简单的链表。 任务描述 任务目标 指针,也称指针变量,用于存放变量的起始地址的变量。结构体指针,用于存放结构体变量的起始地址的变量,即指向结构体变量的指针。指针变量的基类型必须与结构体变量的类型相同,定义结构体指针的一般形式如下: struct 结构体名 *结构指针名 如: structman { char nam[8]; char sex; int age; float score; }; structman *f; //f可以指向struct man类型的数据 知识储备 一、使用结构体指针变量 1 任务二 了解结构体指针、用指针处理链表 使指针指向结构体变量的一般形式: 如: struct man p; struct man *f; f=p; //f可以指向结构体变量p 当结构体指针变量指向某结构体变量,通过该结构体指针变量可以引用结构体变量的成员,其一般形式: 一、使用结构体指针变量 任务二 了解结构体指针、用指针处理链表 链表是动态地进行存储分配的一种数据结构。链表有一个“头指针”变量,图中以head表示,它存放一个地址,该地址指向链表中的第一个元素。链表中的每一个元素称为“结点”,头指针的类型与所指向的结点类型相同。每个结点包括两个部分: 数据和下一个结点的地址。链表中的最后一个元素称为“表尾”,它的指针变量中存放“NULL”(即空地址,值为0),链表到此结束。 二、使用指针处理链表 任务二 了解结构体指针、用指针处理链表 显然,链表这种数据结构必须利用结构体变量和指针变量才能实现。结构体变量为链表中的结点,它有两种成员,第一种是数据,第二种是指向下一个结点的指针变量。如: 二、使用指针处理链表 struct student { int num; float score; struct student *next; }stu; 结构体变量stu是链表中的一个结点,stu.num、stu.score是结点的实际数据,stu.next是下一个结点的地址。 任务二 了解结构体指针、用指针处理链表 1. 建立单向静态链表 静态链表中的结点不是临时开辟的,用完后也不能释放。其建立过程为: (1)定义结点类型,其一般形式: (2)定义结点: (3)定义头指针: (4)使头指针指向第一个结点: (5)使结点的指针指向下一结点: (6) 建立链表尾。 二、使用指针处理链表 任务二 了解结构体指针、用指针处理链表 #include stdio.h main() { struct student { int num; float score; struct student *next; }a,b,c;//定义结点 struct student *head,*f;//定义头指针head和用于访问结点的指针f a.num=10101;b.num=10113;c.num=10115; a.score=88.5;b.score=100;c.score=87; //对结点各成员赋值 head=a;a.next=b;b.next=c;c.next=NULL; //建立链表 f=head; while(f!=NULL) //循环输出链表中结点的值 { printf(%d,%.1f\n,f-num,f-score); f=f-next; //获取下一结点的地址 } } 如:静态建立如下链表 任务二 了解结构体指针、用指针处理链表 2. 建立单向动态链表 所谓动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相连的关系。 建立过程如下: (1)定义结点类型。 (2)定义头指针。 (3)开辟第一个结点单元,并使头指针指向它: (4)循环开辟新结点空间,并将新结点地址存入前一结点的指针成员。 二、使用指针处理链表 任务二 了解结构体指针、用指针处理链表 (1)静态建立下图所示的链表,它由4个数据结点组成。循环输出各结点中的数据。 想一想 ① 头指针head起什么作用? ② 静态建立单向链表的步骤是什么? 实训操作 2 任务二 了解结构体指针、用指针处理链表 (2)动态建立下图所示的链表,它由4个数据结点组成
您可能关注的文档
- 教学课件 《电子商务物流管理》(高职).ppt
- 教学课件 《工程数学——复变函数与积分变换》(本科).ppt
- 教学课件 《生产与运作管理》(高职).ppt
- 教学课件 汽车文化(中职).ppt
- 教学课件 《建筑工程资料管理》(中职).ppt
- 教学课件 《建筑设备》(本科).ppt
- 教学课件 《机械测绘技术基础》(中职).ppt
- 教学课件 职业道德与法律资源包(中职).ppt
- 教学课件 《成本核算实务》(中职).ppt
- 教学课件 《物流成本管理》(高职).ppt
- 专卖店促销员销售与成交技巧培训课件(34P).pptx
- 红色商务风新员工入职销售技巧知识培训课件(34P).pptx
- 专卖店商场销售员销售与成交技巧培训课件(34P).pptx
- 小区物业保安法律知识培训课件(28P).pptx
- 专卖店销售员轻松成交技巧培训(34P).pptx
- 轻松成交客户新员工入职通用销售技巧知识培训(34P).pptx
- 2024年初级《银行业法律法规与综合能力》考前必刷必练题库500题(含真题、必会题).docx
- 2024年“新安法知多少”知识竞赛题库及答案(最新版).docx
- 2024年30秒毕业生面试工作自我介绍.docx
- 2024年《医务人员礼仪培训》心得体会.docx
文档评论(0)