我是女神二级的叶子老师,用自己多年的计算机教师经验,把最容易吸收的知识点分享给考生。我将持续分享关于计算机二级国考方面的文章。感兴趣的读者请点击右上角“关注”吧!
公共基础
二级Office必考的考点
专业性很强
如果没有好的复习资料
是相当枯燥、晦涩、难懂的
你还为公共基础难懂
苦大愁深吗?
你还为不知如何拿下选择题
焦头烂额吗?
今天开始,小编带着大家
远离枯燥、远离专业术语
白话学懂公共基础!
程林高手武功秘籍--公共基础知识
4. 讲座会的座次--链表
4.1 何谓链表
某班同学组织到影院观影,然而买到的电影票没有连号,更没有按学号分发给各位同学。这使本班同学在影院中必须比较散乱地分开就座了。如何能在观影期间,无一遗漏地找到本班的所有同学呢?班长想到这样一个对策:请每位同学都记录下自己下一学号同学的座次号,每位同学只记录他下一学号的这一位同学的座次号就可以了。这样,如果找到了学号为1号的同学,就能从他那里问到2号同学的座次号,找到2号同学;再从2号同学那里问到学号为3号的同学的座次号,找到3号同学;再从3号同学问到4号同学的座次号,找到4号同学……直到找到最后一位同学,最后一位同学所记录的座次号为0,表示不再有下一位。
上面这种对策,在程序中被称为链表。
在链表中,一个数据元素的结点由两部分组成:(1)用于存放数据值的部分,称数据域;(2)用于存放指针(地址)的部分,称指针域,指针(地址)指向前一个或后一个结点。如图16-3所示。
链表的例子如图16-4所示。图16-4的链表有5个结点(head用于找到第1个结点,称头结点,它不保存数据,不属于链表中的结点)。各结点左下角的数字表示该结点的地址。在第一个结点的指针域内存入第二个结点的地址,在第二个结点的指针域内又存入第三个结点的地址…如此串连下去直到最后一个结点;最后一个结点无后续结点,其指针域为0。
由于链表中的每个结点都记录着下一结点的地址,从一个结点就可以找到下一个结点,而下一个结点又记录着再下一个结点的地址,因而又能找到再下一个结点……这样一个一个地链接着找下去,就能得到链表中的所有数据了。然而必须从第一个结点出发才能找全所有结点;如果从中间某个结点出发找下去,那么它之前的结点就访问不到了。
链表中,谁保存下一个结点的地址,谁就是"前件(前驱)",被保存地址的结点相对来说就是"后件(后继)"。这种结点之间的前后件关系,是链表的逻辑结构。由于每个结点都只保存一个结点的地址,所以每个结点只有一个"下一个结点";反过来说,每个结点的地址都只被一个结点保存着,即每个结点的"上一个结点"也只有一个,所以说链表也是线性结构。
链表各结点的存储空间可以是动态分配的;即需要空间时,哪里有空间,数据就将位于哪里。这类似于学生听讲座会时的"随便就座",哪里有座位就坐到哪里,而与学号无关(这里学号顺序为逻辑结构,所坐到的具体位置为存储结构)。链表的结点也不一定连续存储,前件结点的空间也可能在后件结点的后面。例如结点"11"链接到结点"20","11"在"20"之前,这是逻辑结构。然而"11"的地址是6000,"20"的地址是5000,"11"的地址反而在"20"之后,这是物理(存储)结构,与逻辑上的前后关系是不同的。因此链表的特点是:
链表中,数据元素之间的逻辑关系是由指针域决定的。结点之间逻辑上的前后件关系,不决定于所位于位置的前后关系(地址大小);各元素的存储空间可以不连续,各元素的存储顺序与元素之间的逻辑关系可以不一致。链表的"逻辑顺序≠物理存储顺序"。
以上内容仅是个人一点经验,仅供参考。欢迎评论、收藏与分享!如果这篇文章对您有用就请点个赞吧!关注老师可以查看历史文章!
举报/反馈