动态数据结构.ppt

上传人:王** 文档编号:162182 上传时间:2023-02-28 格式:PPT 页数:12 大小:145.50KB
下载 相关 举报
动态数据结构.ppt_第1页
第1页 / 共12页
动态数据结构.ppt_第2页
第2页 / 共12页
动态数据结构.ppt_第3页
第3页 / 共12页
动态数据结构.ppt_第4页
第4页 / 共12页
动态数据结构.ppt_第5页
第5页 / 共12页
动态数据结构.ppt_第6页
第6页 / 共12页
动态数据结构.ppt_第7页
第7页 / 共12页
动态数据结构.ppt_第8页
第8页 / 共12页
动态数据结构.ppt_第9页
第9页 / 共12页
动态数据结构.ppt_第10页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《动态数据结构.ppt》由会员分享,可在线阅读,更多相关《动态数据结构.ppt(12页珍藏版)》请在优知文库上搜索。

1、指指 针针1 1、引入指针类型的必要性(静态数据结构的弊端)、引入指针类型的必要性(静态数据结构的弊端)(1 1)pascalpascal系统为属于静态数据结构的变量提供了系统为属于静态数据结构的变量提供了64KB64KB的静态数据区,用户需求不能超出该存储空间。的静态数据区,用户需求不能超出该存储空间。(2 2)静态数据结构的变量一经定义,)静态数据结构的变量一经定义,pascalpascal系统将自动系统将自动为它们在静态数据区分配内存。在程序执行过程中,这为它们在静态数据区分配内存。在程序执行过程中,这些变量所占的存储空间大小固定不变,极有可能产生无些变量所占的存储空间大小固定不变,极有

2、可能产生无谓的浪费。谓的浪费。(3 3)在静态的数据序列中,增加或删除一个元素必)在静态的数据序列中,增加或删除一个元素必须经过大量的数据移动才能实现。须经过大量的数据移动才能实现。指指 针针2 2、指针类型的定义格式、指针类型的定义格式Typepointer=数据基类型数据基类型;Varp:pointer;Varp: 数据基类型数据基类型;数据基类型是指针所指向的存储单元存放的数据类型数据基类型是指针所指向的存储单元存放的数据类型指指 针针3 3、指针变量的引用、指针变量的引用Varptr1,ptr2: integer;i,t:integer;Begini:=10; ptr1:=i; t:=

3、ptr1;ptr2:=20; ptr1:=ptr2;ptr1:=ptr2;End.ptr110i10t10ptr22020指指 针针4 4、动态变量的生成和释放、动态变量的生成和释放(1 1)生成动态变量)生成动态变量New(New(指针变量指针变量) )例:例:new(p)p一个指针变量只能存放一个地址,再次执行一个指针变量只能存放一个地址,再次执行newnew(p p)语句,生成新单元,丢失原单元。)语句,生成新单元,丢失原单元。功能:生成一个类型为指针基类型的存储单元,功能:生成一个类型为指针基类型的存储单元,并将此存储单元的地址赋给指针变量。并将此存储单元的地址赋给指针变量。指指 针针

4、4 4、动态变量的生成和释放、动态变量的生成和释放例:例:dispose(p)p功能:功能:释放释放指针变量指针变量所指的存储单元,并使指针所指的存储单元,并使指针变量的值取变量的值取nilnil。(2 2)释放动态变量)释放动态变量dispose(dispose(指针变量指针变量) )nilnil表示指针暂不指向任何变量。表示指针暂不指向任何变量。指针的应用指针的应用链表结构链表结构(1 1)每个框表示链表的一个元素)每个框表示链表的一个元素结点。结点。(2 2)每个结点包含两个域:一个放数据,为数据域;)每个结点包含两个域:一个放数据,为数据域;另一个存放后继结点的地址,为后继指针域。另一

5、个存放后继结点的地址,为后继指针域。(3 3)链表的第一个结点称为表头,指向表头的指针)链表的第一个结点称为表头,指向表头的指针headhead称为头指针,头指针为称为头指针,头指针为nilnil时,链表为空链表。时,链表为空链表。(4 4)表尾结点的后继指针域的值为)表尾结点的后继指针域的值为nilnil。headnil指针的应用指针的应用链表结构链表结构1 1、单链表的定义、单链表的定义结点结点数据域数据域后继指针域后继指针域记录类型记录类型Typepointer=element;element=record data:integer; next:pointer; end;Varp:poi

6、nter;ppdata nextp.datap.nextp.next指针的应用指针的应用链表结构链表结构2 2、建立链表建立链表ppheadNew (p);If n=1 then head:=p else q.next:=p;q:=p;p:p:指向新建结点指向新建结点 q:q:指向当前结点指向当前结点q循循环环指针的应用指针的应用链表结构链表结构2 2、建立链表建立链表定义一个建立有定义一个建立有n n个结点的链表的过程。个结点的链表的过程。Procedure creat(var head:pointer;var n:integer);BeginHead:=nil; i:=0;While (i

7、n) doBeginNew(p);i:=i+1; read(p.data);If i=1 then head:=p else q.next:=p;q:=p;End;If headnil then q.next:=nil;Dispose(p);End.指针的应用指针的应用链表结构链表结构3 3、链表结点的插入链表结点的插入pNew (p);Read(p.data);p.next:=q.next;q.next:=p;q指针的应用指针的应用链表结构链表结构4 4、链表结点的删除链表结点的删除q.next:=p.next;dispose(p);qp指针的应用指针的应用链表结构链表结构练习练习利用随机函数建立一个具有利用随机函数建立一个具有5050个结点的链表,每个个结点的链表,每个结点中的数值为结点中的数值为0 0至至100100之间的整数。打印链表中每之间的整数。打印链表中每个结点的值;再删除链表中具有偶数值的那些结点,个结点的值;再删除链表中具有偶数值的那些结点,并把删除后的链表打印出来。并把删除后的链表打印出来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 文学/艺术/历史 > 工具类书籍

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!