考点3 线性表的链式存储
一.选择题部分
1. 用链表表示线性表的优点是( )。
A. 便于随机存取
B. 花费的存储空间比顺序表少
C. 便于插入与删除
D. 数据元素的物理顺序与逻辑顺序相同
2. 线性表采用链式存储时,结点的存储地址( )。
A. 必须是不连续的
B. 连续与否均可
C. 必须是连续的
D. 和头结点的存储地址相连续
3. 链表不具备的特点是( )。
A. 可随机访问任一结点
B. 插入删除不需要移动元素
C. 不必事先估计存储空间
D. 所需空间与其长度成正比
4. 与单链表相比,双链表的优点之一是( )。
A. 插入、删除操作更简单
B. 可以进行随机访问
C. 可以省略表头指针或表尾指针
D. 顺序访问相邻结点更灵活
5. 在一个长度为n(n>1)的单链表上,设有头和尾两个指针,分别指向该链表的第一个结点和最后一个结点,则执行( )操作与链表的长度有关。
A. 删除单链表中的第一个元素
B. 删除单链表中的最后一个元素
C. 在单链表第一个元素前插入一个新元素
D. 在单链表最后一个元素后插入一个新元素
6. 在单链表指针为p的结点之后插入指针为s的结点,正确的操作是( )。
A. p->next=s;s->next=p->next
B. s->next=p->next ;p->next=s;
C. p->next=s;p->next=s->next
D. p->next=s->next;p->next=s
7. 在循环双链表的p所指的结点之前插入s所指结点的操作是( )。
A. p->prior = s;s->next = p;p->prior->next = s;s->prior = p->prior
B. p->prior = s;p->prior->next = s;s->next = p;s->prior = p->prior
C. s->next = p;s->prior = p->prior;p->prior = s;p->prior->next = s
D. s->next = p;s->prior = p->prior;p->prior->next = s;p->prior = s
8. 单链表中,增加一个头结点的目的是为了( )。
A. 使单链表至少有一个结点
B. 标识表结点中首结点的位置
C. 方面运算的实现
D. 说明单链表是线性表的链式存储
9. 如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用( )。
A. 只有表头指针没有表尾指针的循环单链表
B. 只有表尾指针没有表头指针的循环单链表
C. 非循环双链表
D. 循环双链表
10. 用不带头结点的单链表存储队列,其头指针指向队头结点,尾指针指向队尾结点,则在进行出队操作时( )。
A. 仅修改队头指针
B. 仅修改队尾指针
C. 队头、队尾指针都可能要修改
D. 队头、队尾指针都要修改
11. 单链表的存储密度( )。
A. 大于1
B. 等于1
C. 小于1
D. 不能确定
12. 设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为( )。
A. O(log2n)
B. O(1)
C. O(n2)
D. O(n)
13. 设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是( )。
A. head==0
B. head->next==0
C. head->next==head
D. head!=0
14. 将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为( )。
A. O(1)
B. O(n)
C. O(m)
D. O(m+n)
15. 在一个长度为n的单链表的第i(0<=i<n)个元素后面插入一个元素时,需要向后移动( )个元素。
A. n-i
B. n-i+1
C. n-i-1
D. 0
16. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是( )。
A. 单链表
B. 静态链表
C. 线性链表
D. 顺序存储结构
17. 非空的循环单链表head的尾结点(由p所指向)满足( )。
A. p->next== NULL
B. p ==NULL
C. p->next==head
D. p ==head
18. 在一个以 h为头指针的双向循环链表中,指针p所指的元素是尾元素的条件是( )。
A. p==h
B. h->rlink==p
C. p->llink==h
D. p->rlink==h
19. 循环链表的主要优点是( )。
A. 不再需要头指针了
B. 已知某个结点的位置后,很容易找到它的直接前驱结点
C. 在进行删除后,能保证链表不断开
D. 从表中任一结点出发都能遍历整个链表
20. 已知指针p和q分别指向某单链表中第一个结点和最后一个结点。假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为( )。
A. q->next=s->next;s->next=p;
B. s->next=p;q->next=s->next;
C. p->next=s->next;s->next=q;
D. s->next=q;p->next=s->next;
21. 在单链表中,指针p指向元素为x的结点,实现删除x的后继的语句是( )。
A. p=p->next;
B. p->next=p->next->next;
C. p->next=p;
D. p=p->next->next;
22. 从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功情况下,则平均比较( )个结点。
A. n
B. n/2
C. (n-1)/2
D. (n+1)/2
23. 在一个单链表中,若q所指结点是p所指结点的前驱结点,若在q与p之间插入一个s所指的结点,则执行( )。
A. s→link=p→link; p→link=s;
B. p→link=s; s→link=q;
C. p→link=s→link; s→link=p;
D. q →link=s; s→link =p;
24. 设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列( )存储方式最节省运算时间。
A. 单向链表
B. 单向循环链表
C. 双向链表
D. 双向循环链表
25. 在双向链表存储结构中,删除p所指的结点时须修改指针( )。
A. p->prior->next=p->next; p->next->prior=p->prior;
B. p->prior=p->prior->prior; p->prior->next=p;
C. p->next->prior=p; p->next=p->next->next
D. p->next=p->prior->prior; p->prior=p->next->next;
更多资料请访问个人站点:www.kaoyanlianmeng.com。。。参考答案请参考本考点的答案那一篇文章