欢迎来到天天文库
浏览记录
ID:36848084
大小:207.10 KB
页数:67页
时间:2019-05-10
《《动态数据结构》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章动态数据结构1教学目标动态数据结构的概念动态申请和释放内存的方法链表的建立链表结点的插入和删除算法27.1从静态数据结构到动态数据结构7.2动态内存分配7.3链表7.4本章小结37.1从静态数据结构到动态数据结构静态数据结构的特点是由系统分配固定大小的存储空间,以后在程序运行的过程中,存储空间的位置和容量都不会再改变。如数组、简单类型(int、float)等。实际生活中常常有这样的问题,数据量的多少是动态变化的。如何解决?4动态数据结构不确定总的数据存储量,而是为现有的每一个数据元素定义一
2、个确定的初始大小的空间,若干个数据元素分配若干个同样大小的空间;当数据量发生变化时,数据存储空间的大小也发生变化。如果数据量增加,就重新向系统申请新的空间;如果数据量减少,就将现有的多余空间归还给系统。57.2.动态内存分配ANSIC中用于动态操作的标准函数C++中用于动态操作的运算符——new和delete(不要求)6ANSIC中用于动态操作的标准函数ANSIC中提供了若干个动态内存操作标准函数,它们的名称分别是malloc、calloc、realloc、free等。这些函数可以使用在任何的C
3、环境中,其原型定义在malloc.h文件中。7malloc函数原型:void*malloc(unsignedintsize);功能:向系统申请一个确定大小(size个字节)的存储空间,返回值为一个指向void类型的分配域起始地址的指针值。如果此函数操作失败,返回值为空。8使用格式:指针型变量=(基类型*)malloc(需要的存储空间的字节数);例7-1:为一个整数分配存储空间,需要的语句为:在文件的头部:#include在说明部分:int*p;在程序中:p=(int*)mal
4、loc(sizeof(int));9【例7-1】测试malloc的程序:#include#include#includevoidmain(){int*p;p=(int*)malloc(sizeof(int));if(!p)exit(0);*p=10;printf("*p=%d",*p);free(p);}10calloc函数原型:void*calloc(unsignedintn,unsignedintsize);功能:向系统申请n个大
5、小为size个字节的连续存储空间,返回值为一个指向void类型的分配域起始地址的指针值。如果此函数操作失败,返回值为空。使用此函数可以为一维数组开辟一片连续的动态存储空间。11使用格式:指针型变量=(数组元素类型*)calloc(n,每一个数组元素的存储空间的字节数);例7-2:为一个有10个整数的一维数组分配存储空间,需要的语句为:在文件的头部:#include在说明部分:int*p;在程序中:p=(int*)calloc(10,sizeof(int));12【例7-2】使
6、用calloc函数程序#include#include#include#defineN10voidmain(){int*p;intx,i;p=(int*)calloc(N,sizeof(int));if(!p)exit(0);for(i=0;i7、alloc函数原型:void*realloc(void*p,unsignedintsize);功能:向系统重新申请一个确定大小的存储空间,并将原存储空间中的数据值传送到新的地址空间的低端,返回值为一个指向void类型的分配域起始地址的指针值。如果此函数操作失败,返回值为空,原存储空间的数据也将丢失。14使用格式:指针型变量=(基类型*)realloc(原存储空间的首地址,新的存储空间的字节数);例7-3:现有一个为10个整数分配的存储空间,其首地址为p;由于数据量的增加,原存储空间已满,需要扩大8、原空间为20个整数的大小;需要的语句为:在文件的头部:#include在说明部分:int*p;在程序中:p=(int*)realloc(p,sizeof(int)*20);15【例7-3】使用realloc函数程序#include#include#includevoidmain(){int*p1,*p2;p1=(int*)malloc(sizeof(int)*10);if(!p1)exit(0);p2=(int*)re
7、alloc函数原型:void*realloc(void*p,unsignedintsize);功能:向系统重新申请一个确定大小的存储空间,并将原存储空间中的数据值传送到新的地址空间的低端,返回值为一个指向void类型的分配域起始地址的指针值。如果此函数操作失败,返回值为空,原存储空间的数据也将丢失。14使用格式:指针型变量=(基类型*)realloc(原存储空间的首地址,新的存储空间的字节数);例7-3:现有一个为10个整数分配的存储空间,其首地址为p;由于数据量的增加,原存储空间已满,需要扩大
8、原空间为20个整数的大小;需要的语句为:在文件的头部:#include在说明部分:int*p;在程序中:p=(int*)realloc(p,sizeof(int)*20);15【例7-3】使用realloc函数程序#include#include#includevoidmain(){int*p1,*p2;p1=(int*)malloc(sizeof(int)*10);if(!p1)exit(0);p2=(int*)re
此文档下载收益归作者所有