网站大量收购独家精品文档,联系QQ:2885784924

第十章节菜单与工具栏.docVIP

  1. 1、本文档共25页,可阅读全部内容。
  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文档。上传文档
查看更多
指针常用于描述动态存储结构的实现。 动态存储结构中常用的有链表,堆栈,队列等存储结构。 可以把堆栈和队列看成特殊的链表 ???? 本节只是简单介绍一下如何利用指针和记录来实现链表结构。 ???? 链表是一组元素的序列,在这个序列中每个元素总是与他前面的元素相链接(第一个元素除外)。这种关系可以通过指针来实现。链表中的元素称为节点,第一个节点称为表头,最后一个称为表尾。指向表头的指针称为头指针,在这个头指针里存放着表头的地址。节点一般用记录来描述,描述节点的记录至少含有两个域,一个用来存放数据,该域的类型根据要存放的数据而定,称为值域;另一个用来存放下一个节点的地址,称为指针域。表尾不指向任何节点,其指针的值为NIL。如图: 应用Object LPascal的指针和记录类型,图示的链表可以声明如下: Type ?? Node:=? Record; ????? Data: Char; ????? Next: ^Node; ?? End; Var ?? Head: ^Node; 或者: Type ?? Link = ^Node; ?? Node:= Record ????? Data: Char; ????? Next: ^Node; ?? End; Var ?? Head: Link;?? ???? 链表中相邻节点的地址是不连续的。当表头指针失去了指向表头的地址后,就无法找到整个链表,从而不能再对链表进行操作。同样,当任一节点中的指针失去了下一个节点后,链表就会断开,后边的节点就会全部消失。 ??? 若让表尾节点原有的空指针指向表头节点,就成为循环链表。如果链表的各节点既有指向前一个节点的指针又有指向后一个节点指针,这时的链表就称为双向链表。 ??? 链表可以描述许多实际问题,区别只是链表的值域有所不同。 ??? 对链表的操作有查找,插入,删除等。对于插入和删除操作来说,链表是很实用的数据结构。不论在链表的什么位置插入或删除节点,只需修改相应的指针。不必像顺序存储的数组那样需要移动数组中的每个元素。但对于链表来说,只有指针对用户来说是可见的。因此,要访问链表中某个节点的数据,必须从头指针开始依次搜索要访问的元素。 ??? 队列和堆栈是特殊的链表。所谓队列就是一个先入先出表。在该表中只允许在表头插入节点,在表尾删除节点。向队列中插入节点称作入队,新节点入队后就成为队列的新表尾;从队列的表头删除节点称为出队,出队后,其后继节点成为表头。由于队列的插入和删除操作分别在两端进行,所以要删除的节点将是队列中最先进入的节点。堆栈则允许在链表的表头进行插入和删除操作。这里表头称为栈顶,另一端为栈底。向一个堆栈中插入新节点成为入栈或压栈,新节点插入后成为新的栈顶节点;从堆栈中删除节点称为出栈或退栈,它是把栈顶节点删除掉,是其相邻的节点成为新的栈顶。由于插入和删除仅在栈顶一端进行,后进栈的节点必然会先被删除,所以堆栈又称为先进后出表。 9-1】 下列是一个关于在链表中利用指针处理字符串的程序。 ?? 分析:该程序的功能是通过一个文本编辑框输入一个字符串,输入后将该字符串存入一个链表中。每输入一次,在链表中新添一个节点。输入一些字符串后,单击“显示”按钮将输入的所有字符串显示在一个列表框中。通过文本编辑框输入的所有字符串显示在一个列表框中。通过文本框输入要查找的字符串,然后单击“删除”,将该字符串从链表中删除。此时再按下“显示”按钮,显示新的链表中的数据。 ? 设计时添加一个组件Edit, 名为Edit1,添加一个组件Memo,名为Memo1, 三个Button组件:“删除”名为btnDel,“显示”名为btnList,“退出”名为btnQuit。 ??? 为了实现程序的功能,先声明一个全程的链表结构类型并命名一个该类型变量。这些在窗体单元的实现部分的开始处进行实现: implementation {$R *.dfm} type ?? pLink = ^Node; ?? Node = record ????? Data: string[30]; ????? Next: pLink; ?? end; var ?? Head: pLink; 当程序创建窗体时进行变量Head的初始化: procedure TForm1.FormCreate(Sender: TObject); begin ? Head:= Nil; end; ?? 当在文本编辑框中输入字符串并按下回车键后,在链表上添加一个新节点,并将输入的数据保存在该节点的数据域中,这个功能通过Edit1的OnKeyPress处理过程实现: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var ? tem

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档