- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
应用最关键的就是在于如何改变结点指针域的值。 Type p=^nod nod=record data:integer; next:p; end; 分析:先对数据类型进行说明,p,q,head为指针类型。 (1)从空表开始,头指针为nil; (2)读入一个数; (3)当读入的数为正整数时, (3.1)判断:如果要填数据的结点为头结点 则(a)申请新结点; (b)填新结点数据域,指针域置nil; (c)设置头、尾指针都指向新结点; 否则:(a)申请新结点; (b)将读入的数送入新结点的数据域,指针域置nil; (c) 将新结点链接到已有的表的表尾; (d)尾指针后移一个结点,调整尾指针指向新的表尾 (为连接下一个新结点作准备); (3.2) 再读入下一个数;Program ex4_2 (input,output); type point=^node; node=record data:integer; next:point; end; var p,q,head:point; begin 注意:在线性链表操作中,一定要注意保存链表第一个结点的地址,不能丢失,否则链表无法访问。所以习惯用head保存第一个结点地址。 new(p1) ——向计算机申请内存地址 链式结构——如何申请、释放存储单元 p1^ p1 34F2 34F2 type p=^integer; var p1:p; p1^:=200 ——给p1指向的单元赋值 dispose(p1) ——释放存储单元 200 34F2 地址被释放,变量P与地址34F2没有关系 p1:^integer; arrp = ^array[1..10] of real; Type p=^integer; arr=array[1..4] of char; arrp = ^arr; Var p1:p; p2:arrp; 指针变量所指向的类型不同,计算机所给予的存储单元的多少也不相同。 指针类型定义中的基类型只能是类型标识符,不能是具体的类型定义。 p1^ p1 p2 p2^[i] 链式结构——什么是指针 begin new(p1);p1^:=100; new(p2);p2^:=200; p1:=p2; end. … 3010 3011 … 4020 4021 4022 4023 4024 3011 p1 100 4024 p2 200 4024 p1 (1) 同一基类型的指针变量可以互相赋值。 链式结构——指针变量的基本操作 p1:=nil p1^:=p2^; ? (2)对指针变量可以进行关系运算 如:if P1P2 then 语句1 else 语句2; while P3 NIL do ............. ............. end; 关系运算的结果,仍是 FALSE , TRUE 。 链式结构——指针变量的基本操作 由于指针变量代表的是存储单元地址,它不能用输出语句进行打印,故在调试程序时要多加小心 1、下面的自定义函数完成对一个单链表的查询操作,则方框中应填入( )。 function find(var head:pointer;var x:integer):pointer; var p:pointer; begin p:=head; while ( ) do p:=p^.next; find := p; end; A.(p^.datax) B.(pnil) C.(p^.datax) OR (pnil) D.(p^.datax) AND (pnil) 2、下列关于线性表的叙述正确的是() A、线性表采用顺序存储,必须占用一片连续的存储单元 B、线性表采用顺序存储,便于进行插入和删除操作 C、线性表采用链接存储,不必占用一片连续的存储单元 D、线性表采用链接存
原创力文档


文档评论(0)