c语言学习 第十章 结构和杂类.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用指针操作链 表 一、链 表概述 1,链 表结构是 一种动态结构, 而数组是 静态结构;链 表中相邻元素 (结点)物理地点不必然接连, 而数组中相邻元素的物理地点接连. 2,动态安排、开释函数 stdlib.h void *malloc(int size) calloc(int n, int size) free(ptr) 3,对于单向链 表的常用术语 (1)“头指针”变量 head —— 指向链 表的起始结点; (2)结点 —— 链 表中的每个元素; (3) “ 表尾” —— 它的地点部分放一个“Null ” (空地点); 1259 A 1356 B 1575 C 1021 D Null head 1259 1356 1575 1021  用指针操作链 表 二、创立链 表 1,创立有5个学生信息的单向链 表 ①开发一个新结点,使 p1, p2指向它 ②读入一个学生的信息给 p1 所指的结点 ③当读入的 p1 - num 不为 0 时,做 : n = n+1 介入 n==1 那么 : head=p1 *把 p1所指的结点做为第一个结点* 否那么 : p2 - next = p1 *把 p1所指的结点毗连到 表尾* p2 = p1 *p2移到 表尾* head = NULL , n = 0 89101 89,5 head P1 P2 (n = 1)  用指针操作链 表 ④ 再开发一个新结点, 使 p1 指向它 ⑤ 读入一个学生信息给 p1 所指结点 ⑥ 尾结点的指针变量 置 NULL 算法的思路是 : 让 p1指向新开的结点, p2 指向链 表中末了一个结点, 把 p1 所指的结点毗连在 p2 所指的结点背面, 用p2-next=p1 来实现 #define NULL 0 #define LEN sizeof (struct student) struct student { long num; float score; struct student *next; }; int n; 89101 89,5 89103 90 head P2 P1 (n = 2) struct student *creat( ) *此creat函数带回一个链 表起始 地点 * { struct student *head, *p1, *p2; int n; n = 0 ; p1 = p2 = (struct student *)malloc(LEN); *开发一个新单元* scanf (%ld, %f, p1-num, p1-score); head = NULL; while(p1-num! = 0) { n++; if(n == 1) head = p1; else p2-next = p1; p2 = p1; *malloc返回字符型指针* p1 = (struct student *)malloc(LEN); scanf (%ld,%f, p1-num, p1-score); } p2-next = NULL; return (head); }  用指针操作链 表 三、输出链 表 p=head (使 p指向第一个结点), 介入 p指向的不是 尾结点, 那么: 输出 p所指向的结点 接着使 p后移指向下一个结点,再输出 直到 p指向链 表的尾结点为止 void print (struct student *head) { struct student *p; printf (\nNow, These %d records are:\n, n); p = head; if (head != NULL) do { printf (%ld%5,1f\n, p-num, p-score); p = p-next; }while (p != NULL); }  用指针操作链 表 四、删除操纵 删除操纵包涵两步: ①搜刮: 寻觅吻合前提的结点, 同时记下其前一结点位置; ②删除结点 操作方式: 设两个指针变量p1为往后指针, p2为前一结点指针 如果链 表为非空 , 那么: p1 = head 当 num ≠ p1-num 且p1 指向结点不是 尾结点 , 做: p2 = p1 (p2 后移一个位置) p1 = p1-next (p1 后移

文档评论(0)

mestyle + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档