C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt

C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt

ID:50320716

大小:645.50 KB

页数:17页

时间:2020-03-08

C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt_第1页
C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt_第2页
C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt_第3页
C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt_第4页
C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt_第5页
资源描述:

《C语言程序设计教程 教学课件 作者 王曙燕 chapter10 指针与链表.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章指针与链表结构体与指针指向结构体变量的指针结构体指针变量的定义:struct结构体名*指针变量名;例如:structstudent*pt=&stu;structstudent{intnum;charname[20];charsex;intage;}stu;使用结构体指针变量引用成员形式(*结构体指针名).成员名结构体指针名->成员名结构体变量名.成员名structstudent{intnum;charname[20];charsex;intage;}stu;structstudent*p=&stu;(*p).nump->numstu.numagesexnamen

2、umstupp=&stu.num例:结构体指针的使用#include#includestructstudent{intnum;charname[20];charsex;intage;};main(){structstudentstu,*p;p=&stu;stu.num=10011;strcpy(stu.name,"KobeBryant");p->sex='M';p->age=33;printf("No:%dname:%ssex:%cscore:%d",(*p).num,p->name,stu.sex,p->age

3、);}例:结构体数组指针的使用structstudent{intnum;charname[20];charsex;intage;}stu[3]={{10101,"LiLin",'M',18},{10102,"ZhangFun",'M',19},{10103,"WangMin",'F',20}};main(){structstudent*p;for(p=stu;pnum,p->name,p->sex,p->age);}10101LiLinM18stu[0]pstu[1]stu[2]p+1p+2

4、10102ZhangFunM1910103WangMinF20结构体指针作函数参数用结构体变量的成员作参数---单值传递用结构体变量作参数---多值传递用指向结构体变量或数组的指针作参数---地址传递。指针与链表链表可以动态的进行存储分配1249head1249A13561356B14751475C10211021DNULLhead:头指针,存放一个地址,指向链表中的第一个元素.每一个元素称为一个“结点”,每个结点都包括两部分:1.用户需要的实际数据;2.下一个结点的地址.表尾:它的地址部分放一个“NULL”,链表到此结束.可用结构体类型的变量来存储链表中的结点元素.1

5、249head1249A13561356B14751475C10211021DNULL每一个结点中存放地址的部分可用指针来实现.例:structstudent{intnum;floatscore;structstudent*next;};简单静态链表#defineNULL0structstudent{longnum;floatscore;structstudent*next;};main(){structstudenta,b,c,*head,*p;a.num=9901;a.score=89.5;b.num=9903;b.score=90;c.num=9905;c.sco

6、re=85;head=&a;a.next=&b;b.next=&c;c.next=NULL;p=head;do{printf(“%ld%5.2f”,p->num,p->score);p=p->next;}while(p!=NULL);}anumscorenextbcheadp990189.5990390990585&a&b&cNULL&a&b&cNULL动态链表处理动态链表所需的函数1.malloc函数void*malloc(unsignedintsize);作用是:在内存的动态存储区分配一个长度为size的连续空间原型说明在“stdlib.h”头文件和“alloc

7、.h”头文件中2.calloc函数void*calloc(unsignedn,unsignedsize);作用是:在内存的动态区分配n个长度为size的连续空间.3.free函数voidfree(void*p);作用是:释放由p指向的内存区.typedefstructNode{intdata;structNode*next;}Node;链表的插入操作se∧×①s->next=pre->next;②pre->next=s;顺序可以颠倒吗?a1a2ai-1aian∧……prehvoidInsList(Node*L,inti,inte){Nod

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

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

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