美文网首页
word实验二

word实验二

作者: 林之禾 | 来源:发表于2018-04-12 18:03 被阅读0次

数据结构练习(线性表)

一、选择题

1.线性表是一个
A. 有限序列,可以为空 B. 有限序列,不能为空

C. 无限序列,可以为空 D. 无限序列,不能为空

2.设线性表L=(a1,a2,……an),下列关于线性表的叙述正确的是 。

A. 每个元素都有一个直接前驱和一个直接后继

B. 线性表中至少有一个元素

C. 表中元素排列顺序必须按由小到大或由大到小

D. 除第一个和最后一个元素外,其余每个元素都有且只有一个直接前驱和一个

直接后继

3.下面关于线性表的叙述中,错误的是

A. 线性表采用顺序存储,必须占用一片连续的存储单元

B. 线性表采用顺序存储,便于进行插入和删除操作

C. 线性表采用链接存储,不必占用一片连续的存储单元

D. 线性表采用链接存储,便于进行插入和删除操作

4.某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为

A. 144 B. 145 C. 147 D. 148

5.若长度为n的顺序存储结构线性表,删除第i个数据元素,需要向前移动 <u>A</u> 个数据元素。

A. n-i B. n+i C. n-i-1 D. n-i+1

6.若长度为n的顺序存储结构线性表, 在第i个位置插入一个元素, 需要依次向后移动 <u>D</u> 个元素。

A. n-i B. n+i C. n-i-1D. n-i+1

  1. 在下列存储结构中,最适合实现在线性表中进行随机访问的是 <u>A</u> 。

A. 数组 B. 双向链表 C. 单向链表 D. 循环链表

  1. 与单链表相比,双链表的优点之一是 <u>D</u> 。

A.可以由最后一个结点找到头结点 B.可随机访问

C.插入、删除操作更加简单 D.访问前驱结点更加方便

9.如果对线性表的运算只有2种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 <u>D</u> 。

A.顺序表 B.单链表 C.双向链表 D.具有表尾指针的循环单链表

10.在表头指针为head且表长大于1的单向循环链表中,指针p指向表中的某个结点,若p->next->next==head,则 <u>D</u> 。

A. p指向头结点 B. p指向尾结点

C.p的直接后继是头结点 D.p的直接后继是尾结点

11.带表头附加结点的单链表head为空的判断条件是 <u>B</u> 。

A. head==NULL B. head->next==NULL

C. head->next==head D. head!=NULL

  1. 对线性表,在下列情况下应当采用链表表示的是 <u>B</u> 。

A. 经常需要随机地存取元素

B. 经常需要进行插入和删除操作

C. 表中元素需要占据一片连续的存储空间

D. 表中的元素个数不变

13.如果最常用的操作是取第i个结点及前驱,则采用 <u>A</u> 存储方式最节省时间。

A.顺序表 B.双链表 C.单循环链表 D.单链表

14.可以用带表头附加结点的链表表示线性表,也可以用不带表头附加结点的链表表示线性表,前者最主要的好处是 <u>B</u> 。

A.可以加快对表的遍历 B. 使空表和非空表的处理统一

C.节省存储空间 D. 可以提高存取表元素的速度

15.一个顺序表所占存储空间的大小与 <u>D</u> 无关。

A.顺序表长度 B.结点类型

C.结点中个数据域的类型 D.结点的存放次序

16.从一个具n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较 <u>D</u> 个结点。

A.n B.n/2 C.(n-1)/2 D.(n+1)/2

17.单链表中,q在前,p在后的指向相邻的两个结点,要在q,p之间插入s所指的结点应是D_。

A.s->next=p->next; p->next=s; B.p->next=s->next; s->next=p;

C.p->next=s; s->next=q; D.q->next=s; s->next=p;

18.在单链表中,指针p指向元素为x的结点,实现删除x的后继的语句是 <u>B</u> 。

A.p=p->next B.p->next=p->next->next

C.p->next=p D.p=p->next->next

19.一个循环单链表中,若要在指针q所指结点的后面插入一个由指针P所指向的结点,则执行 <u>D</u> 。

A.q—>next=p;p—>next=q—>next;

B.p—>next=q—>next;q=p;

C.q—>next=p—>next;p—>next=q;

D.p—>next=q—>next;q—>next=p;

20.在循环双链表的指针p所指结点之前插入指针q所指结点的操作是 <u>D</u> 。

A.p->left=q; q->right=p; p->left->right=q; q->left=p->left;

B.p->left=q; p->left->right=q; q->right=p; q->left=p->left;

C.q->right=p; q->left=p->left; p->left=q; p->left->right=q;

D.q->right=p; q->left =p->left; p->left->right=q; p->left=q;

二、算法设计题

1.设有一个顺序表L,其元素为整型数据,编写一个要求时间复杂度为O(n)、空间复杂度为O(1)的算法,将L中所有小于0的整数放在前半部分,大于0的整数放在后半部分。提示:从L的两端查找,前端找大于0的数据,后端找小于0的数据,然后将两位置的数据交换。

void Exchange_num(SqList &L){

  for(int i=0,j=L.length-1;i<j;){

  while(i<j&&L.data[i]<0){

 i++;

  while(i<j&&L.data[j]>0)

 j--;

  if(i<j){

  int temp=L.data[i];

 L.data[i]=L.data[j];

 L.data[j]=temp;

 }
}
}

函数题有问题的直接问吧,如果有错误,记得提醒一下

相关文章

网友评论

      本文标题:word实验二

      本文链接:https://www.haomeiwen.com/subject/tisfkftx.html