第1章 绪论

一、选择题

1. 从逻辑结构上可以把数据结构分为(  c  )。

A. 静态结构和动态结构      B. 紧凑结构和非紧凑结构  

C. 线性结构和非线性结构    D. 内部结构和外部结构

2. 顺序存储表示中数据元素之间的逻辑关系是由(   c   )表示的。

A. 指针      B. 逻辑顺序       C. 存储位置       D. 问题的上下文

3. 链式存储表示中数据元素之间的逻辑关系是由(   A )表示的。

A. 指针      B. 逻辑顺序       C. 存储位置       D. 问题的上下文

4. 若某算法的时间复杂度是O(n2 ) ,表明该算法( D )。

A. 问题规模是n2          B. 执行时间是n2    

C. 问题规模与n2成正比    D. 执行时间与n2成正比

5. 算法的时间复杂度与(A  )有关。

A. 问题规模       B. 计算机硬件的运行速度   

C. 源程序的长度   D. 编译后机器代码的质量

6. 算法必须具备(  B  )这3个特性

A. 可执行性,可移植性,可扩充性     B. 可执行性,确定性,有穷性  

C. 确定性,有穷性,稳定性           D. 易读性,稳定性,安全性

7. 下面程序段的时间复杂度为( C   )。

for( i=0; i<m; i++)

   for(j=0; j<n; j++)

       a[i][j]=i*j;

A. O(m2)       B. O(n2)        C. O(m×n)      D. O(m+n)

8. 以下程序段中,S语句的执行次数是(  C )   

for( i=1; i<=n; i++)

  for(j=i; j<=n; j++)

      S;

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

二、填空题

1. 数据元素之间的4种基本结构是:集合、 图结构       树结构      线性结构    

2. 线性结构中元素的关系是一对一,树形结构中元素的关系是 一对多        ,图形结构中元素的关系是   多对多       

3. 顺序存储结构中数据元素的存储位置与其   元素在数组的下标     是对应的。

4. 算法效率的度量方法有:事后统计方法和  事前分析估算的方法法            

5. 一个好算法应达到的目标有: 正确性      可读性      健壮性       效率       低存储量    

6. 抽象数据类型可细分为3种:  原子类型      固定聚合类型       可变聚合类型       

7. 抽象数据类型的定义一般包括3方面: 数据对象          数据关系          基本操作       

三、判断题

1. 数据结构主要研究非数值型数据。(  对)

2. 数据的逻辑结构相同则对应的存储结构也相同。(错  )

3. 数据的逻辑结构独立于其存储结构。( 对 )

4. 数据元素是数据的最小单位。( 错 )数据项

5. 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。( 对 )

6. 数据的逻辑结构与数据元素本身的内容和形式无关。(对  )

7. 数据的逻辑结构是指数据的各数据项之间的逻辑关系。( 错 )数据元素

8. 抽象数据类型只是一个数学模型。( 错 )

9. 算法和程序原则上没有区别,在 讨论数据结构时二者是通用的。( 错 )

10. 数据结构是数据元素的集合和该集合中各数据元素之间关系的集合。( 对 )

11. 顺序存储方式只能用于线性结构,不能用于非线性结构。( 错 )

四、简答题

1. 什么是数据结构,写出数据结构的形式定义。

2. 什么是算法,算法的5个特性是什么?

3. 数据的逻辑结构分为线性结构和非线性结构,这两类结构各自的特点是什么?

五、应用题

1. 按增长率从小到大的顺序排列下列各函数:

n2,n,

,n!,(2/3)n 。  

2. 写出以下各函数的功能,并求出其时间复杂度。

(1) int fun1(int n)

{   int  i, x;

i=2;        x=(int )sqrt(n);

while(i<=x)

{  if (n%i==0)  break;

   i++;

}

if ( i>x) return 1;    

else  return 0;

}

(2) int fun2(int n)

   {  int i, p=1, sum=0;

      for( i=1; i<=n; i++)

       {   p=p*i;

           sum=sum+p;

       }

      return(sum);

   }

(3) int fun3(int n)

{  int i, j, p, sum=0;

      for( i=1; i<=n; i++)

      {  p=1;

         for(j=1; j<=i; j++)

            p=p*j;

         sum=sum+p;

      }

return(sum);

   }

        

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值