- 1、本文档共63页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 后移
您可能关注的文档
- c语言学习 第六章.ppt
- c语言学习 第七章 数组.ppt
- c语言学习 第三章.ppt
- c语言学习 第四章.ppt
- c语言学习 第五章.ppt
- c语言学习 第一章.ppt
- c语言学习 排序详解.ppt
- c语言学习 绪论.ppt
- c语言学习,c语言课件第1章.ppt
- c语言学习,c语言课件第02章.ppt
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)