网站大量收购独家精品文档,联系QQ:2885784924

C语言程序设计教程第2版张磊第8章节结构体程序设计.ppt

C语言程序设计教程第2版张磊第8章节结构体程序设计.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.5.3 动态内存管理函数 2.free()函数 函数原型 void free(void *block); 功能 释放以前分配给指针变量block的动态空间,但指针变量block不会自动变成空指针。 例如:free(block) C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.5.3 动态内存管理函数 3. calloc()函数 函数原型 void *calloc(unsigned n,unsigned size); 功能 以size为单位大小共分配n*size个字节的连续空间,并将该空间的首地址作为函数的返回值。如果函数没有成功执行,返回值为空指针(NULL或0)。 例如:int *p; p=(int *)calloc(10,sizeof(int)); C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.5.4 定义链表结构 要定义一个链表结点的结构,须有两项内容: 定义数据存储所对应的各个成员; 定义指向其他结点的指针成员。 例如: 假若要用链表逐个存储一批整数,其结点结构可定义如下: struct node { int data; struct node *next; }; 存储具体数据 存储下一个节点的地址 struct node类型的结点形成的链表 头指针 空指针 C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.5.4 定义链表结构 学号 姓名 性别 成绩 9901 liujia M 87 9902 wangkai M 89 9903 xiaohua F 81 9904 zhangli F 82 9905 wangfeng M 88 struct student { int num; char name[20]; char sex; int score; struct student *next; }; 必须的成员,否则构不成链表 学生链表的结点定义 结点 C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.6 链表的基本操作 8.6.1 链表结点的插入 8.6.2 链表结点的删除 8.6.3 链表结点的查找 C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.6.1 链表结点的插入 在链表中插入结点,就是把一个新结点连接到链表中。 两种情况: 在空链表中插入一个结点; 在链表的p结点之后插入一个新结点。 C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.6.1 链表结点的插入 1.在空链表中插入一个结点 空链表就是头指针head为空的链表。 ⑴ 申请一个new结点。 new=(struct node *)calloc(1,sizeof(struct node)); ⑵ 为p结点填充数据。 将要存储的数据对应赋值给p结点数据域的各个成员。 ⑶ 修改有关指针的指向。 ① 将new的next成员置空,使new结点成为链表的最后一个结点。 ② 将head指向new结点。 C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.6.1 链表结点的插入 2.在head链表的p结点之后插入一个结点 head链表和要插入结点new如图所示。要将new结点插入在p结点之后,就是将new结点变成结点C的下一个结点,而使new的下一个结点成为结点D。 ⑴ 使new的指针域存储结点D的首地址。 new-next=p-next; ⑵ 把new的首地址存储到结点p的指针域中。 p-next=new; C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.6.1 链表结点的插入 insert()函数 功能:在head链表的p结点之后插入值为x的结点 struct student *insert(struct node *head,struct node *p,int x) { struct node *new; new=(struct node *)calloc(1,sizeof(struct node)); new-data=x; if(head==NULL) { head=new; head-next=NULL; } else { new-next=p-next; p-next=new; } return head; } C语言程序设计(第2版) 张磊编著 中国铁道出版社 8.6.1 链表结点的插入 例8-7 用插入结点的方法建立图示的学生成绩链表,链表head有10个结点,每个结点存储一个学生的学号和学习成绩数据。 程序:

您可能关注的文档

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档