- 5
- 0
- 约5.25千字
- 约 22页
- 2017-11-27 发布于广东
- 举报
【例5-18】建立如图5-14所示的包含5个结点的单链表,每个结点定义如下: typedef struct node { char no[10];//学号 char name [20];// 姓名 struct node *next; }NODE; 并且实现根据姓名进行记录查找的功能。 尚辅网 / 5.7 链表 主讲人 张静 常州信息职业技术学院 2、掌握链表的建立、插入和删除算法 3、能利用链表编写应用程序 4、能够独立思考编写代码,并基本熟练 在VC6.0环境下进行程序的调试和测试 知识/能力目标 1、了解动态存储分配和链表的基本概念 (一)动态存储分配 我们把由程序员控制存储分配方法,根据需要临时分配存储单元用以存放有用的数据,当数据不用时又可以随时释放存储单元的过程称为动态存储分配。 一、动态存储分配及链表的概念 数组的特点 2.向数组中插入或删除一个元素时,该元素后的所有元素都要向后或向前移动,增加了对内存的访问量;且当数据无用时,不能及时释放存储空间为其他变量所用; 1.系统为数组分配一片连续的存储空间 ;对数组元素的访问非常方便,只要指定其下标就可以; 3.用数组存放数据时,必须事先定义固定的长度,在某些情况下可能会出现比较严重的内存浪费现象。 一、动态存储分配及链表的概念 (二)链表 链表 能够弥补数组存在的上述缺陷。 0012FF20H 03101 李晗 …… 0012FF32H 03102 王丽丽 …… 0012FF5CH 03108 吴婷 …… NULL head 0012FF20H 0012FF32H 0012FF5CH 头指针,存放开始结点的地址 开始结点(头结点) 尾结点,指针域为空 数据区,存放本结点的数据 指针区,指向下一结点 结点 图5-16 一个简单的单向链表 typedef struct node { char num[10]; char name[20]; … struct student *next; }NODE; (一)分配内存空间malloc()函数 二、用于动态存储分配的函数 把开辟的8个字节的存储空间转换为long型,并把该空间的起始地址赋给指针变量p,使p指向该空间。 long *p; p=(long *)malloc(8); 示 例 在内存的动态存储区开辟一块长度为size个字节的连续区域。若成功分配,则函数的返回值为该区域的首地址,否则返回空指针。 作 用 (类型说明符*) malloc (size) 调用形式 (二)realloc()函数 二、用于动态存储分配的函数 当用函数malloc()分配的存储空间的大小需要改变时,使用该函数。 说 明 将指针变量ptr指向的存储空间(用malloc()分配的)的大小改为size个字节。 作 用 (类型说明符*) realloc (指针变量ptr, size) 调用形式 (三)calloc()函数 二、用于动态存储分配的函数 把申请的30*sizeof(struct student)个字节的存储空 间转换为struct student结构体类型并赋给结构体指 针数组元素stu[0],使stu[0]指向开辟的存储空间 的首地址。 struct student *stu[30]; stu[0]=(struct student *)calloc(30,sizeof(struct student)); 示 例 在内存的动态存储区开辟n个大小为size个字节的连续区域。若成功分配,则函数的返回值为该区域的首地址,否则返回空指针。 作 用 (类型说明符*) calloc (n, size) 调用形式 (四)free()函数 二、用于动态存储分配的函数 struct student *p; p=(struct student *)malloc(sizeof(struct student)); … … … free(p); 示 例 释放指针变量ptr指向的存储空间。 作 用 free (指针变量ptr) 调用形式 ANSI C标准要求在使用动态存储分配函数时,要在程序的前面使用编译预处理命令#include stdlib.h,还有许多编译系统是使用命令#include alloc.h。 (一)链表的建立 1.头插法建不带头结点的单链表 三、链表的建立、插入和删除 s a head (1)将头指针置为NULL (2) 生成一个新结点S (3)将结点的值写入数据域 (4)将head的值
您可能关注的文档
- 经济法第六版王福友曲振涛电子课件7.2800章节.pptx
- 经济法第六版王福友曲振涛电子课件7.2801章节.pptx
- 经济法第六版王福友曲振涛电子课件7.2802章节.pptx
- C语言程序设计李学刚电子课件02单元1程序设计基础.ppt
- 经济法第六版王福友曲振涛电子课件7.2803章节.pptx
- C语言程序设计李学刚电子课件03单元2顺序结构程序设计.ppt
- C语言程序设计李学刚电子课件01第一次课.ppt
- C语言程序设计李学刚电子课件04单元3选择结构程序设计.ppt
- C语言程序设计李学刚电子课件05单元4循环结构程序设计while和dowhile循环结构.ppt
- 翻转课堂大会课件孙方用课件快速制作微课.pptx
- 统编版2025年春季新版七年级下册历史 第21课 明清时期的科技与文化 教案.docx
- 雅安雨城法院书记员招聘考试真题库2025.docx
- 2026届安徽合肥市高考一模高考语文试卷试题(含答案详解).pdf
- 【专题研究】国内外城市更新研究的最新进展.pdf
- 【专题研究】老旧城区改造居民满意度影响因素研究——以遂宁市老旧城区改造为例.pdf
- 【专题研究】关于旧城空间改造理论与创意设计案例的几点思考.pdf
- 西藏拉萨市高三下学期期末物理备考重点详解.docx
- 泾县法院书记员招聘笔试真题2025.pdf
- 2026年春【苏教版】-六年级数学下册-面积的变化.pptx
- 2026年春【苏教版】-六年级数学下册-7.pptx
原创力文档

文档评论(0)