电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

高中信息技术信息学奥赛PASCAL语言-指针类型课件VIP免费

高中信息技术信息学奥赛PASCAL语言-指针类型课件_第1页
1/23
高中信息技术信息学奥赛PASCAL语言-指针类型课件_第2页
2/23
高中信息技术信息学奥赛PASCAL语言-指针类型课件_第3页
3/23
存储空间的分配Varx,y:integer;Beginx:=4;y:=5;End.编译时给变量分配空间运行时给变量赋值x1000Hy4000H45思考:变量x,y的关系?存储空间的分配Vara:array[1..10]ofinteger;i:integer;Beginfori:=1to10doa[i]:=i;End.1000H1002H1004H1006H1008H1010H1012H1014H1016H1018H12345678910a思考:数组a[i]之间的关系?指针类型格式:TYPE<指针类型标识符>=^<结点类型标识符>;<结点类型标识符>=<类型>VAR<指针类型变量表>:<指针类型标识符>;或VAR<指针类型变量表>:^<结点类型标识符>;①结点类型为整型typepointer=^integer;varp1,p2:pointer;②结点类型为整型vara:^real;b:^boolean;③结点类型为记录型typeperson=recordname:string[10];sex:char;age:1..100end;varp:^person;编写一个简单的指针类型的程序Typeperson=recordname:string[10];sex:char;age:1..100end;Varp:^person;Beginnew(p);p^.name:=‘Peter’;p^.sex:=‘M’;p^.age:=20;withp^dowriteln(name:10,sex:10,age:10);dispose(p)End.1、开辟动态存储单元new过程调用的一般格式:new(指针变量)功能:开辟一个存储单元,并把此存储单元的地址赋给指针变量。varp:^integer;编译时给p分配空间ppXXXX执行new(p)后生成新单元新单元的地址为XXXXnew(p);2、释放动态存储单元dispose过程的一般格式:dispose(指针变量)功能:释放指针所指向的存储单元,使指针变量的值无定义。dispose(p);p:=NIL3、动态存储单元的引用引用动态存储单元一般格式:<指针变量>^varp:^integer;i:integer;beginnew(p);p^:=4;i:=p^;①编译时分配存储空间②执行new语句③p^:=4④i:=p^??pi??pi?p^??pi4p^?4pi4p^programpoint1(input,output);typepointer=^integer;vara,b,c:pointer;beginnew(a);new(b);new(c);a^:=5;b^:=8;writeln(‘a=’,a^,‘b=’,b^)c:=a;a:=b;b:=c;writeln(‘a=’,a^,‘b=’,b^)end.例1用指针变量交换两个变量的值。555888aaabbbccc①②③programch346;{初赛篇P157例46}typepointer:^integer;varp1,p2:pointer;beginnew(p1);p1^:=5;p2:=p1;new(p1);p1^:=5;ifp1=p2thenwriteln(‘p1=p2’)elsewriteln(‘p1<>p2’)ifp1^=p2^thenwriteln(‘p1^=p2^)elsewriteln(‘p1^<>p2^)writeln(s)end.运行结果:p1<>p2p1^=p2^单向链表(设输入次序为x1,x2,…,xn)先进先出队先进后出栈x2…headx3x1x9x10x9…headx8x10x2x1指针类型格式:TYPE<指针类型标识符>=^<结点类型标识符>;<结点类型标识符>=<类型>VAR<指针类型变量表>:<指针类型标识符>;或VAR<指针类型变量表>:^<结点类型标识符>;单向链表定义TYPEpoint=^nodenode=RECORDdata:real;link:pointEND;VARhead,last,next:point;x:real;构建链表(先进先出)Varhead,last,next:point;x:real;Beginread(x);new(head);head^.data:=x;last:=head;read(x);whilex>=0dobeginnew(next);next^.data:=x;last^.link:=next;last:=next;read(x)end;last^.link:=NILEnd.输出链表next:=head;whilenext<>NILdobeginwrite(next^.data:6:0);next:=next^.linkend;writeln删除一个结点lastnextlastnextlast^.link:=next^.link;dispose(next);Proceduredelete(x:real;VARhead:point;VARdeleted:boolean);Varlast,next:point;Beginnext:=head;while(next^.data<>x)and(next^.link<>NIL)dobeginlast:=next;next:=next^.link;end;ifnext^.data=xthenbegindeleted:=true;ifnext=headthenhead:=head^.linkelselast^.link:=next^.link;dispose(next)endelsedeleted:=falseEnd.插入一个结点lastnextlast^.link:=q;q^.link:=next;qlastnext插入一个结点headq{表头插入}nextq{表尾插入}{表间插入}nextqlast在一有序链表中插入一个新的结点,使插入以后仍然有序。Procedureinsert(x:real;VARhead:point);Varq,last,next:point;Beginnew(q);q^.data:=x;ifx<=head^.datathenbegin{插入表前}q^.link:=head;head:=qendelsebeginnext:=head;while(x>next^.data)and(next^.link<>NIL)dobeginlast:=next;next:=next^.linkend;ifx<=next^.data{插入表间}thenbeginlast^.link:=q;q^.link:=nextendelsebegin{插入表尾}next^.link:=q;q^.link:=NILendendEnd.建立有序链表Procedurecreateorder(VARhead:point);Varx:real;Beginread(x);new(head);head^.data:=x;head^.link:=NIL;read(x)whilex>=0dobegininsert(x,head);read(x)endEnd.栈(先进后出)1、设栈的输入序列是(1、2、3、4),则()不可能是其出栈序列。A.1243B.2134C.1432D.4312E.3214指针类型作业:P25711.111.211.3

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

高中信息技术信息学奥赛PASCAL语言-指针类型课件

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部