第九章动态数据结构
C语言程序设计课程组
马迪芳
本章导学
一、主要内容
动态数据结构是相对于静态数据结构来讲的,它是在程序的执行过程
中动态地建立起来的,以致这种数据结构的规模大小可以动态地发
生变化,故称为动态数据结构。
本章主要介绍建立链表结构、在其中查找指定元素、插入一个新元素
、删除一个元素等操作。
2
本章导学
二、本章重点
1、动态数据结构的概念
2 、动态申请和释放内存的方法
3 、链表的建立
4 、链表结点的插入与删除算法
3
本章导学
三、本章难点
1、动态申请和释放内存的方法
2 、链表的建立
3 、链表结点的插入与删除
4
第一单元 动态内存管理
1 动态内存管理
2 malloc() 与calloc()
3 realloc() 与free()
5
1) 动态内存管理
动态内存管理是由操作系统完成的,C程序只是通过特定的函数调用
来完成动态内存的使用。
C语言中的标准库函数提供了4个函数来实现对内存的动态管理:分
配内存块的函数malloc( )和calloc( )、改变内存块大小的函数
realloc( )、释放内存块的函数free( )
这4个函数都是在头文件stdlib.h中声明的,函数中涉及的内存块的
单位都是字节。
6
1) 动态内存管理
分配内存块的函数如果调用成功会返回所申请内存块的
首地址,地址的类型为" void * ",表示无类型指针,也
称为通用指针。之后程序就可以按照需要使用这个内存
块。
通用指针在使用之前必须进行类型转换,只有转换为具
体的类型的指针之后才可以在程序中使用。
7
1) 动态内存管理
当申请的内存块在程序中不再使用时,就要使用释
放内存块的函数free()来释放所占用的内存空间。
所有程序占用的动态分配的内存块在程序退出时都
会被自动释放。
8
2) malloc()
函数malloc( )是用得最广的一个动态内存分配函数
,该函数申请一个指定字节数大小的连续的内存
块。
9
2) malloc()
malloc( )函数原型:void *malloc( size_t size );
其中size_t是标准库预定义的一种类型,一般就是无
符号整数。
参数size指定需要申请的字节数;返回值为所分配内
存块首地址的通用指针,必须将其强制转换成相应类
型才能使用。