pascal编程:指针(point)_第1页
pascal编程:指针(point)_第2页
pascal编程:指针(point)_第3页
pascal编程:指针(point)_第4页
pascal编程:指针(point)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、202056 5620002020ab20002020ab56h在变量的说明部分指针变量的值未确定h2001?2001申请存储单元后系统自动将某一地址分配给变量h,而h所指向的单元值需通过输入或赋值语句确定301030114010401140134012301030114010401140134012301030114010401140134012301030114010401140134012301030114010401140134012程序未执行前的情况第一条语句执行后h3011第二条语句执行后h3011h4013第三条语句执行后h4013第四条语句执行后 由上可知,对同一个指针变量h可

2、以调用若干次new过程,但每一次调用对于指针变量h来说值是不一样的,也就是说指向的内存单元的地址是不同的。我们不必去关心指针变量的值是多少,而是要关心该指针所指向的存储单元的值。305030514010401140134012p13051p24013赋值前赋值后305030514010401140134012p13051p24013305030514010401140134012p13051p24013赋值前赋值后305030514010401140134012p13051p24013有时候我们并不需要指针变量指向其他存储单元,那么就可以将nil赋给指针变量,即p1:=nil;表示指针变量p1

3、为空。任何类型的指针变量都可以被赋值为nil。nType n point=node;n node=recordn data:integer;n next:point;n end;nVar p,q:point;n指针变量有p和q两个,其基类型为node,node是一个自定义记录类型,有两个域:一个域名为data,类型为整型,另一个域名为next,类型为point,可存放另一个node类型存储单元的地址。这里对类型的说明使用了递归的方法。14621358135814621201358?pq1462*13582143*nil1645*21431358*1645head14621462*1358214

4、5*nil1645*21431358*1645head1462 上图中每一个结点顶端的数字表示的是该存储单元的地址值,链表中的第一个结点称为表头,最后一个元素称为表尾。指向链表头的指针称为头指针(head),表尾节点的指针域值为空(nil)。 链表的特点是除第一个结点和最后一个结点外,每一个结点都有一个直接的前趋结点和一个直接的后继结点。相邻结点的地址是互不连续的,它们靠指针域将相互间的关系连接起来。 链表的基本操作主要有链表的建立、链表的遍历、链表中结点数据的访问、向链表中插入一个结点、从链表中删除一个结点等。 在链表中每个结点有两部分:一个是数据部分(可以是一个或多个),另一个是指向下一个

5、结点的指针域,有一个头指针指向链表的表头结点,表尾结点的指针域应为nil表示表的结束。nType n point=node;n node=recordn data:integer;n next:point;n end;nVar p,q,head:point;p用于存放新申请的结点的地址,q用于存 放目前建立链表的尾结点的地址3040head15304081568156830131512001200101315nil插入结点前1560head1581568301315120010nil在表头位置插入304015681200131522304015601560head158156830156012

6、0010nil在链表中插入304015681200131522304015601560head15815683013151200101560在链表尾插入304015681200131522nil1560例例2:输入若干整数(输入32767停止输入)排序(小到大)输出之。program lianbiao;type link=data; data=record num:integer; next:link; end;var head,p,q,r:link;i:integer;begin head:=nil; readln(i); while i32767 do begin new(p); p.num:=i; p.next:=nil; if head=nil then begin head:=p;end else begin q:=head; if p.num=q.num) and (qnil) do begin r:=q ;q:=q.next;end;if q=nil then r.next:=p else begin r.next:=p;p.next:=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论