Pascal语言单链表操作.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Pascal语言单链表操作

Pascal语言单链表操作(第15周) 指针类型和结点类型的定义 type linklist ^node node record data:integer; next:linklist; end; 基本操作 求单链表的长度 单链表的长度是指单链表中所含的结点的个数。从表头指针HL出发沿着每个结点的链,依次向下访问并进行计数,直到最后一个结点为止。 Proc Length HL p←HL; j←0; while p ≠ nil do j ← j+1; p ← p^.next; return j 从单链表中查找出其关键字,等于给定的k结点。 从表头第一个结点起,依次使每个结点的关键字同给定值k进行比较,直到某个结点的关键字等于给定值k(即查找成功)或者查到表尾(即查找失败)为止。 Proc locate HL,k p←HL; while p ≠ nil do if p^.data k then break else p←p^.next; return p 在单链表中第i个结点之后插入一个元素为x的结点 为待插入的元素x分配一个结点(假定是由s指针变量所指向的结点,即s^结点),并把x赋值给s结点的值域。如果i为0,则将s结点插入表头后返回。从单链表中查找第i个结点;若查找成功,则在第i个结点后插入s结点,否则表明i值超出单链表的长度,应进行超出范围的错误提示处理。 Proc Insert HL, i, x new s ; s^.data ← x; if i 0 then s^.next ← HL; HL ← s; return p ← HL; j ← 1; while p ≠ nil and j i do j ← j + 1; p ← p^.next; if p ≠ nil then s^.next ← p^.next; p^.next ← s; else return ‘out of range’ ; 从单链表中删除其值等于给定值x的第一个结点。 如果单链表为空,则进行“下溢”处理;如果表头结点是被删除的结点,则删除该结点返返回。从第二个结点起,查找其值等于x的结点,直到查找结束(即查找成功或查找失败)为止;若查找成功,则删除被查找到的结点,否则进行“没有找到”的错误处理。 Proc Delete HL, x if HL nil then return underflow if HL^.data x then p ← HL; HL ← HL^.next dispose p ; return q ← HL; p ← q^.next while p ≠ nil do if p^.data x then break else q ← p; p ← p^.next; if p ≠ nil then q^.next ← p^.next; dispose p else return not found 课堂练习 实现上述四个算法的代码。 如下图所示,采用动态结点存储双向链表。结点类型可定义为: type tdlist node Prev Data Next node record data:integer; prev,next:tdlist; end 设p和q分别是具有tdlist类型的指针变量,若要在链表中p所指向的结点之后插入一个q所指向的新结点。实现算法: q^.next ← p^.next q^.prev ← q p^.next^.prev ← q p^.next ← q 若要删除指针p所指向的结点,实现算法: p^.prev^.next ← p^.next p^.next.prev ← p^.prev dispose p 实现双向链表的结点插入和删除的算法。 3.用动态结点实现。设有两个线性表LA和LB,对两个线性表从小到大排好序,然后将其合并成为一个线性表LC。合并的原则是: (1)合并后的新表从小到大排序; (2)LC中没有两个相同的元素。

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档