本答案对应课程为:点我自动跳转查看
本课程起止时间为:2021-02-15到2021-06-30

第一章 绪论 绪论测验

1、 问题:下面(       )术语与数据的存储结构无关
选项:
A:顺序表
B:链表
C:队列
D:顺序队列
答案: 【队列

2、 问题:算法分析的目的是(     )
选项:
A:找出数据结构的合理性
B:研究算法的输入与输出的关系
C:分析算法的效率以求改进
D:分析算法的易懂性和文档性
答案: 【分析算法的效率以求改进

3、 问题:下面程序段的时间复杂度是(     )for(i=0;i<n;i++)    for(j=0;j<m;j++)       A[i][j]=0;
选项:
A: O(nm)
B:O(n)
C:O(m)
D:O(n+m)
答案: 【 O(n
m)】

4、 问题:下面程序段的时间复杂度是(     )i=s=0;while(s<n){i++;s+=i;}
选项:
A:O(n)
B:O(s)
C:O(sqrt(n))  注释:sqrt(n)表示对n开方
D:O(n^2)  注释:n^2表示求n的平方
答案: 【O(sqrt(n))  注释:sqrt(n)表示对n开方

5、 问题:下面程序段的时间复杂度是(     )i=1;while(i<=n)   i=i3;
选项:
A:O(n)
B:O(3
n)
C:O(n^3) 注释:n的立方的复杂度
D:O(logn) 注释:对数复杂度
答案: 【O(logn) 注释:对数复杂度

6、 问题:数据的关系有逻辑关系和存储关系。其中逻辑关系是进行算法分析和设计需要考虑与使用的,而存储关系是编程实现的时候需要考虑的,逻辑关系和存储关系之间并没有关系
选项:
A:正确
B:错误
答案: 【错误

7、 问题:下面的递归函数时间复杂度是O(1)int fact(int n){      if(n<=1)return 1;      else return n*fact(n-1);}
选项:
A:正确
B:错误
答案: 【错误

8、 问题:算法和程序都不能无穷的,否则会进入死循环
选项:
A:正确
B:错误
答案: 【错误

9、 问题:数据包含数据对象,数据对象包含数据元素,数据元素包含数据项。
选项:
A:正确
B:错误
答案: 【正确

10、 问题:算法可以用不同的语言描述,比如C或者java,所以算法实际上就是程序。
选项:
A:正确
B:错误
答案: 【错误

第二章2.1 线性表 (本章内容比较多,需要2周的学习时间) 线性表测验

1、 问题:双向链表中有2个指针域pre和next,分别指向直接前驱和直接后继,假设有指针p指向链表中的一个结点,指针q指向一个待插入的结点,现在要求在p的前面插入q所指结点,则正确的插入语句为(          )
选项:
A:p->pre=q;q->next=p;p->pre->next=q;q->pre=p->pre;
B:q->pre=p->pre;p->pre->next=q;q->next=p;p->pre=q->next;
C:q->next=p;p->next=q;p->pre->next=q;q->next=p;
D:p->pre->next=q; q->next=p; q->pre=p->pre;p->pre=q;
答案: 【p->pre->next=q; q->next=p; q->pre=p->pre;p->pre=q;

2、 问题:在一个具有n个链结点的线性链表中,按数据内容查找某一个结点,如果查找成功,需要平均比较(      )个结点。
选项:
A:n
B:n/2
C:(n+1)/2
D:(n-1)/2
答案: 【(n+1)/2

3、 问题:假设按照行优先存储整数数组A[9][8],第一个元素a11的首字节地址是100,每个整数占4个字节,则元素a32的存储地址是(          )提示:数组大小是9行8列,第一个位置是1,不是0
选项:
A:164
B:168
C:144
D:172
答案: 【168

4、 问题:一个栈的入栈序列是a,b,c,d,e,则不可能的出栈输出序列是(      )
选项:
A:edcba
B:decba
C:dceab
D:abcde
答案: 【dceab

5、 问题:当对一个线性表经常进行存取而很少进行插入及删除操作时,采用(       )存储结构最节省时间;如果经常进行插入,删除操作时,则采用(       )存储结构最节省时间。
选项:
A:顺序,顺序
B:顺序,链式
C:链式,链式
D:链式,顺序
答案: 【顺序,链式

6、 问题:设顺序表L是一个非递减的有序表,下面的哪个算法,能够将元素x插入L中,并使L仍然有序。
选项:
A://L是顺序存储结构void insert(list L,elemtype x){    int i=1;    while(i<=L->length)    {         if(x>L->data[i])i++;         else L->data[i]=x;     }  }
B://L是顺序存储结构void insert(list
L,elemtype x){    int i=L->length-1;    while(i>=0)    {         if(x<L->data[i]){L->data[i+1]=L->data[i];–i;}             }     L->data[i]=x;    L->length+=1;}
C://L是顺序存储结构void insert(list L,elemtype x){    int i=1;    while(i<=L->length)    {         if(x>L->data[i]){L->data[i+1]=L->data[i];i++;}         else {L->data[i]=x;break;}     }  }
D://L是顺序存储结构void insert(list
L,elemtype x){     int i=L->length;    while(i>=1)    {         if(x<L->data[i]){L->data[i+1]=L->data[i];–i;}         L->data[i]=x;     }  }
答案: 【//L是顺序存储结构void insert(list *L,elemtype x){    int i=L->length-1;    while(i>=0)    {         if(x<L->data[i]){L->data[i+1]=L->data[i];–i;}             }     L->data[i]=x;    L->length+=1;}

7、 问题:已知数据3,4,-2,0,8存储在顺序存储结构中,编程实现删除x的操作为(       )提示:数据从顺序存储结构的第0个位置开始存储
选项:
A:void del(SqList L,elemtype x){    int i=0;    while(i<L.length)   {       if(x==L.data[i])L.data[i]=0;       i++;   }}
B:void del(SqList L,elemtype x){    int i=0;    while(i<L.length)   {       if(x==L.data[i])L.data[i]=-1;       i++;   }}
C:void del(SqList L,elemtype x){    int i=L.length;    while(i>0 )   {       if(x!=L.data[i])L.data[i-1]=L.data[i];       i–;   }}
D:void del(SqList L,elemtype x){    int i=0,bfind=0;    while(i<L.length-1)   {       if(bfind==0 && x==L.data[i])bfind=1;       if(bfind){L.data[i]=L.data[i+1];}       i++;   }}
E:void del(SqList L,elemtype x){    int i=0;    while(i<L.length)   {      if(L.data[i]!=x){                   i++;      }      else break;   }   while(i<L.length-1)   {    L.data[i]=L.data[i+1]; i++;}   L.length–;}
答案: 【void del(SqList L,elemtype x){    int i=0;    while(i<L.length)   {      if(L.data[i]!=x){                   i++;      }      else break;   }   while(i<L.length-1)   {    L.data[i]=L.data[i+1]; i++;}   L.length–;}

8、 问题:已知不带头结点的单链表L,下面用函数实现的在第一个元素前面插入值为x的元素结点的算法错误的是(      )
选项:
A:void  insert(List L,elemtype x){     node d=new node(x);     d.next=L;     L=&d;}
B:List * insert(List
L,elemtype x){         node d=new node(x);    d.next=L;    L=&d;     return L;}
C:void  insert(List L,elemtype x){          ptr p=L;     node d=new node(x);     ptr q=&d;     p->next=q;     L=&q;}
D:List  insert(List L,elemtype x){     node d=new node(x);     d.next=L;          return &d;}
答案: 【void  insert(List L,elemtype x){          ptr p=L;     node d=new node(x);     ptr q=&d;     p->next=q;     L=&q;}

9、 问题:下面程序段的输出结果是(     )void main(){     Queue Q;     InitQueue(Q);    char x=’e’,y=’c’;    EnQueue(Q,’h’);    EnQueue(Q,’r’);   EnQueue(Q,y);   DeQueue(Q,x);   EnQueue(Q,x);   DeQueue(Q,x);   EnQueue(Q,’a‘);  while(!QueueEmpty(Q)){   DeQueue(Q,y);  printf(y);} printf(x);
选项:
A:hrcha
B:rchah
C:rcha
D:char
答案: 【char

10、 问题:当在一个有序的顺序存储表上查找一个数据时,可用折半查找,也可用顺序查找,但前者比后者的查找速度(     )
选项:
A:一定快
B:不一定快
C:大部分情况下快
D:取决于表递增还是递减
答案: 【大部分情况下快

11、 问题:已知有一系列输入数据为32,14,78,2,62,5,需要得到5,2,2,7,4,2,请问用什么数据结构支撑算法?
选项:
A:用栈将数据全部入栈,再出栈,出栈的数据取个位,就得到需要的输出序列。
B:用队列将数据全部入队,再全部出队,出队的时候取该数据的个位,就得到需要的输出序列。
C:用一个整数变量空间,把输入的数据依次存储,存储之后取个位,输出个位,再读入下一个数据。这样的空间利用率最高。
D:用数组存储输入的数据,再逆向输出所有数据。
答案: 【用栈将数据全部入栈,再出栈,出栈的数据取个位,就得到需要的输出序列。

12、 问题:关键字越大,优先级越高。为了更好的为优先级高的顾客服务,银行应该采用什么存储结构支撑算法?
选项:
A:顺序存储结构
B:链式存储结构
C:有序数组
D:有序链表
答案: 【有序链表

第二章 2.2 查找 查找测验

1、 问题:已知在长度为n的线性表中采用顺序查找,查找成功最好的比较次数是(    ),查找成功的最坏比较次数是(      ),查找失败的比较次数是(         )
选项:
A:1,n,n
B:0,n,n+1
C:1,n,n+1
D:1,n+1,n+1
答案: 【1,n,n

2、 问题:长度为n的有序顺序表采用折半查找,查找成功的最少次数为(     ),查找成功的最大次数为(     ),查找失败的最大次数为(      ),所以折半查找的最坏时间复杂度为(        )
选项:
A:1,logn,logn,O(logn)
B:1,n,n,O(n)
C:1,n,logn,O(logn)

本门课程剩余章节答案为付费内容
本文章不含期末不含主观题!!
本文章不含期末不含主观题!!
支付后可长期查看
有疑问请添加客服QQ 2356025045反馈
如遇卡顿看不了请换个浏览器即可打开
请看清楚了再购买哦,电子资源购买后不支持退款哦

   

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注