第2章测试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
1.从一个具有n个结点的单链表中查找值为x的结点,在查找成功情况下,需平均比较(
n个节点,单链表。
如果x等于第一个元素的值。则要比较1次
x等于第二个元素的值,则要比较2次
…
最不巧:x值刚好等于第n个元素,则要比较x次
所以总次数是1+2+3+……+n-1+n=(n+1)*n/2
所以平均需要:(n+1)/2次。
顺序数组可以用折半查找,需要 log2…为低…N 次个结点。
A.n B.n/2 C.(n-1)/2 D.(n+1)/2
2.(a )插入、删除速度快,但查找速度慢。
链表只需要修改前驱或者前驱与后继的指针就可以,查找时链表需要顺序查找,并且由于读取指针耗费时间
A.链表B.顺序表C.有序顺序表D.上述三项无法比较
3.若希望从链表中快速确定一个结点的前驱,则链表最好采用( c)方式。
双链表在结点前驱后继查找上的时间复杂度是O(1)
A.单链表B.循环单链表C.双向链表D.任意
4.在一个单链表中,若删除p所指结点的后继结点,则执行(d)。
p->next指向p指针的后继结点,p->next->next指向后继结点的后继结点。
A.p->next=p->next B.p=p->next->next
C.p=p->next;p->next=p->next->next; D.p->next=p->next->next
5.带头结点的单链表head为空的判定条件是(b)。
A.head==NULL B.head->next==NULL
C.head->next==head D.head!=NULL
6.在循环双向链表的p所指结点之后插入s所指结点的操作是( d)。
A.p->next=s;s->prior=p;p->next->prior=s;s->next=p->next;
B.p->next=s;p->next->prior=s;s->prior=p;s->next=p->next;
C.s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;
D.s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;
7.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(a)存储方式最节省时间。
想要存取任一指定序号的元素,链表实现这个功能的代价很大
本来顺序表的弱点在于插入和删除元素,但是题目要求只最后进行插入和删除运算,所有顺序表是最好的选择!
A.顺序表B.双向链表C.带头结点的双循环链表D.单循环链表
二、填空题
1.对于采用顺序存储结构的线性表,当随机插入或删除一个数据元素时,平均约需移动表中一半元素。
2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。因为采用链式结构存储线性表,插入和删除操作需要从头结点起查找被插入或删除结点的前驱结点,并修改这些结点的指针域,查找过程平均移动指针域为表长的一半
3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。
它的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式来表示
4.在一个长度为n的顺序存储结构的线性表中,向第i个元素(1≦i≦n+1)之前插入一个新元素时,需向后移动n-i+1个元素。
这道题,可以进行举例来验证,比如要是在第一个元素前插入元素,需要移动n个元素。
i=1时,需要移动n个,进行验证
5.从长度是n的采用顺序存储结构的线性表中删除第i个元素(1≦i≦n),需向前移动n-i个元素。
6.对于长度是n的顺序存储结构的线性表,插入或删除元素的时间复杂度为 0(n)。7.在具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是
0(n)。
因为单链表保存的信息只有表头如果要在特定位置插入一个节点需要先从表头一路找到那个节点这个过程是O(n)的lCYL3JR。
8.在双向链表中,每个结点共有两个指针域,一个指向前驱结点,另一个则指向
后继结点。
三、判断题
1.链表中的头结点仅起到标识的作用。(f)头结点的数据域还可以存储一些必要的数据,如表长。
2.顺序存储结构的主要缺点是不利于插入和删除操作。( t)3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。(f)结点内部空间是连续的。
4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。(f)还有其他比较参数。如空间利用率,难易程度,存取快捷等。
5.对任何数据结构链表存储结构一定优于顺序存储结构。(f)还有其他比较参数。如空间利用率,难易程度,存取快捷等。
6.顺序存储方式只能用于存储线性结构。( f)也可用于树、二叉树等
7.循环链表不是线性表。(f)8.为了很方便地插入和删除数据,可以使用双向链表存放数据。(t)9.线性表的特点是每个元素都有一个前驱和一个后继。( f)第一个结点无前驱,最后一个结点无后继。
10.取线性表的第i个元素的时间与i的大小有关。(f)看线性表的存储机构,链表有关,顺序表无关。
四、应用题
1.线性表有两种存储结构:一是顺序表,二是链式表。试问:
⑴如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在此情况下,应选用哪种存储结构?为什么?
链表,理由是链表能够高效的执行插入删除操作,适用于元素变化较多的情形
⑵若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?为什么?
顺序存储结构。顺序表可以随机存取,时间复杂度为O(1)
2.线性表的顺序存储结构具有三个弱点:其一,在进行插入或删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分的利用。