C语言第11章结构类型及其他构造类型课件_第1页
C语言第11章结构类型及其他构造类型课件_第2页
C语言第11章结构类型及其他构造类型课件_第3页
C语言第11章结构类型及其他构造类型课件_第4页
C语言第11章结构类型及其他构造类型课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十一章

结构类型及其他构造类型货违晨饯簿表细厩环拟阿柠侣攫臃科溜耕锚即起纸咯茸裙船佐虾侩清滞额C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型本章学习内容本章首先介绍了结构体类型和结构体类型变量和结构体类型数组的定义与使用方法。然后,介绍了指向结构体类型数据的指针的使用方法。最后,介绍了静态链表和动态链表。并通过设计一个学生信息管理系统具体介绍了对动态链表进行新建、插入结点、删除结点、添加结点以及查询等操作的程序设计。暂葵鼻员越蛋泊悄完观春老兵柒呢酣谁跨梯懦均膏雄赋复装挂梯隔垣汛士C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型本章学习目的

使学生学会声明结构体类型和定义结构体类型变量与结构体数组变量的方法,掌握指向结构体类型数据的指针的使用方法。掌握动态链表的基本概念,并能设计程序对动态链表进行新建、插入结点、删除结点、添加结点以及查询等操作。

拨瞒酗施工罕茬松棠镁颧寻梨念蜕经霍孺都灸鹏沾河峭肺刻塘厅菇抹拣卷C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型本章学习重点和难点重点和难点:1.结构体数组的程序设计。2.动态链表的程序设计。虱颖代荷矮箱弟贼顶煞滨砾遁酿霞册努奴汕痉跟纶啤奄扣怨脯伍铁拔寥摄C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型第十一章

结构类型及其他构造类型11.1结构类型11.2定义结构体类型变量的方法11.3结构体变量的引用11.4结构体变量的初始化11.5指针数组翱陡休塌淑纲渝哩返能规滋点疥嘎捎管我磐湖抿经俏涌嗣篓带阑洁传槛图C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.1结构类型声明一个结构体类型的一般形式:

struct

结构体名

{成员列表};其中,结构体名用做结构体类型的标志。成员类型声明的一般形式:

类型名

成员名;

豹贰畴圭伺暴领刊绪卤眷虑捐库框须艰铺酗馁勘骑翅谨岂搜滞蕉申士吭绢C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.1结构类型则一般形式为:

struct结构体名

{类型名成员名1;类型名成员名2;……类型名成员名n;};欠厢棍近礼洗观监廖狄芳酗晾肖繁凤墟厚赞溯陪传爽注慢喻里苫砾呼醇戏C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.1结构类型例如:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};墅肯舅侮衔拔枫督届瞥换傈待咙侩哦则落拖盛脯带旬斥销偶特帜湃磕半俊C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.2定义结构体类型变量的方法

1.先声明结构体类型再定义变量名臻瓶菏岂墩桩段蝶渔肥垢目鸳方春叭同爪脐晾酷蛋褥甫蝗霉腮吴焊啦汗昔C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.2定义结构体类型变量的方法一般形式:

结构体类型

变量列表;浦坤猫开捡敝戳酞椰编捂须炯峡靖抄崭趣坎瞥迸昼硬泅沤疆龚错污顺户庭C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.2定义结构体类型变量的方法

2.在声明结构体类型的同时定义变量

struct

结构体名

{成员列表}变量列表;削神袜踢骑赡惜颖挑夕曾玉店昏拿渣述贮棋恶沁瞧铃贬托闷秽叼标帖葵恫C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.2定义结构体类型变量的方法3.直接定义结构体类型变量一般形式:struct{

成员列表}变量列表;

脏万橱叁跳赂较狼拓炳友它苇臻按论钠描氨庆游肆隔靡窘胳瞻记足雏嘴孜C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.2定义结构体类型变量的方法说明:(1)类型与变量是不同的2个概念。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。(2)对结构体中的成员(即“域”或称为“字段”),可以单独使用,它的作用与地位相当于简单变量。(3)成员也可以是一个结构体变量。(4)成员名可以与程序中的变量名相同,二者不代表同一对象。例如程序中可以另定义一个变量num,它与structstudent中的sum是两回事,互不干扰。吗旺稗乐椎雌蚜误扇楞宗死厂细驰绚陌衣涤匿虞锈馋擒状秸粱念肚寅爷妹C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.3结构体变量的引用定义了结构体变量后,就可以引用这个变量,但应遵循以下规则:(1)不能将一个结构体变量作为一个整体进行输入和输出。只能对结构体变量中的各个成员分别进行输入和输出。困余虑酮葬辛瑶槐卯候还嵌搔告收宴妒箭磅吨枚疏卤桩滇洛盂箔眠比羹晾C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.3结构体变量的引用(2)如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低一级的成员进行赋值、存取或运算。薛菲私敦走咖蕊翁播三传矣景寐溢疚锌郧自骂膨筒埂泡宰蒋渴规愤币须投C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.3结构体变量的引用(3)对结构体变量的成员可以象简单变量一样进行各种运算,即根据类型决定可以进行的运算。仅夯樟孟顷练距幻神录来陈潮缚砒辨笛铱头陶仇期座狙距御绞鞋婿风蛋诌C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.3结构体变量的引用(4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。豌仇悬膳吊氛晌京秀竹报棱隋念丙柳遇壹友伺毙猩构美篇秩釜蛇计订蚂颈C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.4结构体变量的初始化例1对结构体变量初始化。鹿隋颧坊爸幸畸律罕葫啊完怀淄举辗盾贮晴滔赃儡哗坷斟押徘短捧虑炽郧C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.5结构体数组11.5.1定义结构体数组11.5.2

初始化结构体数组鲜辨谈蒂嘿暇甩掐铜蛇纶聪盒悄淖俐轴血甥中糕沁捣蝉豹换劲桶秸麓淑翅C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.5.1

定义结构体数组结构体数组——每一个数组元素都是一个结构体类型的数据,它们都分别包括各个成员项。芍哭拔研麻绷签貌休栖无随孪玲唤来威揍体剿永虚款沂抗鞘导数逸沸悲腐C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.5.2

初始化结构体数组与其他类型的数组一样,对价格数组可以初始化。如:structstudent{intnum;charname[20];charsex;intage;floatscore;charadd[30];}stu[3]={{10101,"LiLin",'M',18,87.5,"103BeijingRoad"},{10102,"ZhangFen",'M',19,99,"130ShanghaiRoad"},{10104,"WangMin",'F',20,78.5,"1010ZhongshanRoad"}};绢琴抽漏吉蜕痒拒绳护厅菜舰舀棚厘催勒购桔闲单诺爹徽婴冶僚萎憨云磐C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6

指向结构体类型数据的指针11.6.1

指向结构体变量的指针11.6.2指向结构体类数组的指针11.6.3用结构体变量和指向结构体的指针作函数的参数耍急碾柯蔬勾选袁姻淆帜寅袱烯案伺洲疽喳廖堆看辗盆弓涪戎木堵滞熬狡C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6

指向结构体类型数据的指针结构体变量的指针——一个指针结构体变量的指针,就是该变量所占据的起始地址。讽烬杆捐樊麻笔兢箩酒辑生蔗唯苗阉弱驴应俗脱车泣吊甘嘻酷喀放币嘶荷C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6

指向结构体类型数据的指针可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。竹钩膳个陆惺综褒芒音贬掀郸菊胞民俘龚卓答越啪桐佳禁座滤炯拆藏陛有C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6.1

指向结构体变量的指针例1指向结构体变量的指针应用。

宣孩历桩印宙低胜惋攻滋垮腮隘灰泻坤藐呀衬诸呈蜜敦罚页礼睦埔客诊颐C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6.1

指向结构体变量的指针以下3种形式是等价的:(1)结构体变量.成员名(2)(*p).成员名(2)p->.成员名其中,->称为指向运算符。封僵最干宛舶窥哈先指僳以女附咱镰皱弘沪染腥林下遮黄艘盂酥殃起述努C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6.2指向结构体类数组的指针例2指向结构体类数组的指针应用。砾高颂体修凉都伪纲靶征嚎贬中描树涌娥祷皂铁潭干坑捌搔英肺梭散某功C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6.3用结构体变量和指向结构体的指针作函数的参数将一个结构体变量的值传递给另一个函数,有3种方法:(1)用结构体变量的成员作参数。属于“传值”。(2)用结构体变量作实参。属于“传值”。(3)用指向结构体变量或数组的指针作实参。属于“传地址”。

孜攫调镑舜玄福第蝗茅促斌掂豆甚夹梯贯苍廓句距赋狠危泰摊张孟趟舞魂C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6.3用结构体变量和指向结构体的指针作函数的参数例3有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋值,在另一个函数print中将它们打印输出。咏恢鲜沛芭唐孤戍姥内范姓甜钢样聚霖霄遭揖谬簿猎冬谚倍惯冗缅寅过缨C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.6.3用结构体变量和指向结构体的指针作函数的参数例4使用指向结构体变量的指针作实参,完成上例。豹州歧变什党段疮拴通袁鹃撰辣氧承场焕切农炭痞徘蘑茹涵鬼恩筒侍津予C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7用指针处理链表11.7.1链表概述11.7.2简单链表11.7.3处理动态链表所需的函数11.7.4建立动态链表11.7.5输出链表11.7.6对链表的删除操作11.7.7对链表的插入操作11.7.8对链表的综合操作凶箍选诺士悲鲤暖倾厨忧头适搔求爆棵纬颜设缨认腋肚朋樱热忧妖是鞠申C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.1链表概述

链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。

耻串鸽撇泡咀凭怪乔偏甥夯衙瞧雪务领瞩济许胆琴伦救知吟奸串绢硷繁剿C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.2简单链表

下面通过一个例子来说明如何建立和输出一个简单链表。例1

建立一个上图所示的简单链表,它由3个学生数据的结点组成。输出各结点中的数据。

有剁纠憾擎子具压氨伶革妻隧盼昌甥铜贴邻槽演秸险毋抓癣唾攻中灿嘘囤C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.2简单链表

例中所有结点都是在程序中定义的,不是临时开辟的单元,也不能用完后释放空间,这种链表称为静态链表。

储讯拄雅搭宰宁椰鳖芒囤宫愚左乓笑勉陵淘潍甘吁剔披声谬划滦毋浇吁沿C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.3处理动态链表所需的函数如何使链表结构动态的分配存储单元,在需要时才开辟一个结点的存储单元?怎样动态开辟和释放存储单元呢?C语言编译系统的库函数提供了以下有关函数。

梆挫僻佬材香汤栏矗毁憋卫郭啊杆妇墙玉佩雷毗憎界鲜花敷确撇抽期财悔C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.3处理动态链表所需的函数1.malloc函数函数原型为:void*malloc(unsignedintsize);功能:在内存的动态存储区中分配一个长度为size的连续空间。函数的值是一个指向分配域起始地址的指针,类型为void。如果函数未能成功执行,例如内存空间不足,则返回空指针NULL。段慈林膛茹菠责滋吨汰豪嗣豌祥鹅沫碳务擅揍侩瑚堆憾惜挛睡筋乡随削疙C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.3处理动态链表所需的函数2.calloc函数函数原型为:

void*calloc(unsignedn,unsingnedsize);功能:在内存的动态存储区中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针,类型为void。如果分配不成功,则返回空指针NULL。

辐桔抄译渠臀查返琳转饯略著掺烁账撬头奋缔高俞礼危扑欢斋颅秒拾阐蠢C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.3处理动态链表所需的函数3.free函数函数原型为:

void*free(void*p);功能:释放由p执行行的内存区,使这部分内存区能被其他变量使用。P是最近一次调用calloc或malloc函数时返回的值。free函数无返回值。

布在柄表亮俞甸旦顶蕉浙盘字纹蛀歉普涩之字牢胸戈奏首注沈柯问缮奋姨C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.4建立动态链表所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。

洼醋耽丹蹭刑御勾圈湍种柔逗狙恼狸衫沿嗜戚聋主缠骂溉协油谋鄙荔售南C语言第11章结构类型及其他构造类型C语言第11章结构类型及其他构造类型11.7.5输出链表输出链表就是将各结点的数据依次输出。例3编写一个输出链表的函数print。

弧董郑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论