- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
160929101057552_第2章线性表讲述
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4.建立单链表 单链表和顺序表不同,它是一种动态结构,整个可用存储空间可为多个链表共同享用,每个链表占用的空间不需预先分配划定,而是可以由系统应需求即时生成。动态地建立单链表的常用方法有如下两种: 1、尾插法建单链表(从右边插入结点) 该方法从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表尾上,直到读入结束标志为止。 尾插法创建单链表 B 7. 对于n个元素组成的线性表,建立一个单链表的时间复杂度是( )。 A. O(1) B. O(n) C. O(n2) D. O(nlog2n) 2.3.3 循环链表结构 单链表上的访问是一种顺序访问,从其中某一个结点出发,可以找到它的直接后继,但无法找到它的直接前驱。因此,我们可以考虑建立这样的链表,具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍作改变,使得对表的处理更加方便灵活。从单链表可知,最后一个结点的指针域为NULL表示单链表已经结束。如果将单链表最后一个结点的指针域改为存放链表中头结点(或第一个结点)的地址,就使得整个链表构成一个环,又没有增加额外的存贮空间,称这们的链表为单循环链表,在不引起混淆时称为循环表(后面还要提到双向循环表) 循环链表上的运算与单链表上运算基本一致,区别只在于最后一个结点的判断(即循环的条件不同),但利用循环链表实现某些运算较单链表方便(从某个结点出发能求出它的直接前驱,而单链表是不行的,只能从头出发)。 头 a 1 a 2 …… a n head (b) 非空循环表 带头结的单循环链表示意图 (a) 空循环表 头 head 非空的循环单链表head?的尾结点(由p所指向)满足___ A、 p - next = NULL B、 p = NULL C、 p - next = head D、 p = head C B 15. 循环单链表的主要优点是( )。 A. 不再需要头指针了 B. 从表中任一结点出发都扫描到整个链表 C. 已知某个结点的位置后,能够很容易找到它的直接前驱 D. 在进行插入、删除操作时,能更好地保证链表不断开 A 6.链表不具有的特点是( )。 A. 可随机访问任一元素 B. 插入、删除不需要移动元素 C. 不必事先估计存储空间 D. 所需空间与线性表长度成正比 B 13.在一个长度为n(n1)的带头结点的单链表h上,另设有尾指针r指向尾结点,执行( )操作与链表的长度有关。 A. 删除单链表的第一个元素 B. 删除单链表的最后一个元素 C. 在单链表第一个元素前插入一个新元素 D. 在单链表的最后一个元素后插入一个新元素 C 14.将长度为n的单链表链接在长度为m的单链表之后的算法,其时间复杂度是( )。 A. O(1) B. O(n) C. O(m) D. O(m+n) B 16.若要在O(1)的时间内实现两个单循环链表的首尾相接, 则两个循 环链表应各设一个指针,分别指向( )。 A. 各自的头结点 B. 各自的尾结点 C. 各自的第一个元素结点 D. 一个表的头结点,一个表的尾结点 A 17.设有两个长度为n的单链表,以h1为头指针的链表是非循环的,以h2为尾指针的链表是循环的,则( )。 A. 在两个链表上删除第一个结点的操作,其时间复杂度均为O(1) B. 在两个链表的表尾插入一个结点的操作,其时间复杂度均为O(n) C. 循环链表要比非循环链表占用更多的存储空间 D. 循环链表要比非循环链表占用更少的存储空间 设计算法依次打印单链表中每个结点的数据信息。 void Traver
文档评论(0)