动态数据结构 (2)精选PPT.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《动态数据结构 (2)精选PPT.ppt》由会员分享,可在线阅读,更多相关《动态数据结构 (2)精选PPT.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、动态数据结构第1页,此课件共24页哦 123 .n 如图的链式结构可以满足要求如图的链式结构可以满足要求:当增加一张卡片时,只需要向计算机系统申请一块空间,联到链的适当位置上。例如,当增加一张卡片时,只需要向计算机系统申请一块空间,联到链的适当位置上。例如,要增加一张卡片要增加一张卡片 50 插入到插入到 2、3 之间,则只需要如下修改指针:之间,则只需要如下修改指针:若删除一节,只需要将其从链上摘下来即可。例删除若删除一节,只需要将其从链上摘下来即可。例删除2节得节得:链上已经没有链上已经没有2节了,删掉的节所占的存储空间还可以还回计算机系统,以便作节了,删掉的节所占的存储空间还可以还回计算
2、机系统,以便作其它用途。其它用途。50第2页,此课件共24页哦 这就是一种动态数据结构中的这就是一种动态数据结构中的链表。动态数据结构上的一项是一个动链表。动态数据结构上的一项是一个动态变量,指针是标识动态变量的有力手段。动态变量与静态变量的区别在于态变量,指针是标识动态变量的有力手段。动态变量与静态变量的区别在于:o静态变量是程序中由程序员静态变量是程序中由程序员“显式显式”说明的变量。它有一个名字,在说明的变量。它有一个名字,在编译时,编译程序已经给它分配存储空间。这块存储空间用变量的名编译时,编译程序已经给它分配存储空间。这块存储空间用变量的名字来标识。字来标识。o动态变量在程序中没有动
3、态变量在程序中没有“显式显式”说明,它没有名字,在编译时编译说明,它没有名字,在编译时编译程序不知道有该变量,不给(也不可能给)它分配空间。动态变量程序不知道有该变量,不给(也不可能给)它分配空间。动态变量是在程序运行时,随程序存储数据的需要,由申请空间函数(例如是在程序运行时,随程序存储数据的需要,由申请空间函数(例如malloc,当然也是由程序员安排的)随机的动态的申请来的空间。,当然也是由程序员安排的)随机的动态的申请来的空间。它没有名字,一般动态变量都由指针标识。当使用完毕后,由释放它没有名字,一般动态变量都由指针标识。当使用完毕后,由释放空间函数(例如空间函数(例如free)释放,还
4、回计算机存储管理系统,以备它用。)释放,还回计算机存储管理系统,以备它用。第3页,此课件共24页哦sizeof 运算符运算符:单目运算符单目运算符 sizeof 的的o操作数操作数是类型。是类型。o运算结果运算结果是求得相应类型的尺寸,即存储相应类型数据所需要的字节是求得相应类型的尺寸,即存储相应类型数据所需要的字节数。数。例:例:sizeof(int)/*结果是结果是2*/sizeof(char)/*结果是结果是1*/sizeof(struct date)/*若若 struct date 是第十一章定义的日期类型,结果是是第十一章定义的日期类型,结果是6*/第4页,此课件共24页哦mallo
5、c 函数函数:原型是:原型是:void*malloc(unsigned long size);功能是:功能是:申请足够大内存区域用来存储长度为申请足够大内存区域用来存储长度为size的数据对象,返回该区域的首指的数据对象,返回该区域的首指针。针。返回指针是返回指针是void类型的,调用者必须使用显示强制类型转换,把该指针转类型的,调用者必须使用显示强制类型转换,把该指针转换成所需要类型的指针。换成所需要类型的指针。#include 例例:float*p;p=(float*)malloc(sizeof(float);第5页,此课件共24页哦free函数函数 动态申请的内存如果不再使用,应当适时释
6、放。这样可以提高程序运行效率。动态申请的内存如果不再使用,应当适时释放。这样可以提高程序运行效率。free函函数用来释放经过数用来释放经过malloc申请的动态空间。申请的动态空间。free的函数原型是的函数原型是 void free(void*ptr);free函数的功能是:释放由函数的功能是:释放由malloc申请的内存区域。申请的内存区域。free的参数的参数ptr是一个指是一个指针,指向以前由针,指向以前由malloc申请的一个内存区域。例申请的一个内存区域。例 free(p)/*释放释放p所指向的,前边由所指向的,前边由malloc申请的内存空间申请的内存空间*/一块存储区域一经释放
7、,便不能再使用。一块存储区域一经释放,便不能再使用。第6页,此课件共24页哦实用问题实用问题:若指针变量指向的用若指针变量指向的用malloc申请来的动态变量,是狐立的不能与其它变量相联系,显然作申请来的动态变量,是狐立的不能与其它变量相联系,显然作用不大。引进动态变量的目的是构造动态数据结构。例如象本章开始介绍的那样,构造一个链表用不大。引进动态变量的目的是构造动态数据结构。例如象本章开始介绍的那样,构造一个链表等。这就要求一个数据项上除基本的数据信息外,还应包含与其它数据项相联系的信息,也就是等。这就要求一个数据项上除基本的数据信息外,还应包含与其它数据项相联系的信息,也就是包含指针,呈左
8、图形式。该结构必须用结构体类型描述,链表上一个节点的类型定义形式如右图包含指针,呈左图形式。该结构必须用结构体类型描述,链表上一个节点的类型定义形式如右图所示。所示。类型定义形式类型定义形式 struct t 基本数据部分;基本数据部分;struct t *next;基本数据基本数据部分部分指针部分指针部分一个数据项一个数据项 第7页,此课件共24页哦o 静态建立链表,遍历链表o#define NULL 0o#include stdio.hostruct studentochar name20;/*说明学生的姓名*/oint number;/*说明学生的房间号*/ofloat score;/*
9、说明学生的分数*/ostruct student *link;/*指向下一个结点的指针*/o ;omain()ostruct student a,b,c,*head,*p;oscanf(%s,a.name);oa.number=1;a.score=90;oscanf(%s,b.name);ob.number=2;b.score=92;oscanf(%s,c.name);oc.number=3;c.score=89;ohead=&a;oa.link=&b;ob.link=&c;oc.link=NULL;op=head;第8页,此课件共24页哦odoo printf(%s%d%fn,p-name,
10、p-number,p-score);o p=p-link;o while(p!=NULL);o遍历结点:遍历结点:p=p-link;第9页,此课件共24页哦o 动态建立链表(尾动态建立链表(尾插入法建立链表)o/*建立一个5个结点的链表,存放学生数据(包括姓名、学号、成绩)。可编写一个建立链表的函数creat。程序如下:*/o#include o#include o#define LEN sizeof(struct stu)ostruct stu*create(int n);ostruct stuochar name20;/*说明学生的姓名*/oint number;/*说明学生的房间号*/o
11、int score;/*说明学生的分数*/ostruct stu *link;/*指向下一个结点的指针*/o;omain()oostruct stu*p;op=create(3);odo/*输出并检验量表建的是否正确*/o printf(%s%d%dn,p-name,p-number,p-score);o p=p-link;owhile(p!=NULL);o第10页,此课件共24页哦ostruct stu*create(int n)o struct stu*head,*pf,*pb;o int i=0;o for(i=0;iname,&pb-number,&pb-score);o if(i=0
12、)o pf=head=pb;o else pf-link=pb;o pb-link=NULL;o pf=pb;o oreturn head;第11页,此课件共24页哦o 动态建立链表(动态建立链表(头插入法建立链表)o/*建立一个5个结点的链表,存放学生数据(包括姓名、学号、成绩)。可编写一个建立链表的函数creat。程序如下:*/o#include o#include o#define LEN sizeof(struct stu)ostruct stu*create(int n);ostruct stuochar name20;/*说明学生的姓名*/oint number;/*说明学生的房间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态数据结构 2精选PPT 动态 数据结构 精选 PPT
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内