数据结构补充题(C++)(带答案)

来源:互联网 发布:java 保留4位小数 编辑:程序博客网 时间:2024/04/29 13:44
补充习题:第一章
1.数据结构是研究数据的( C )以及它们之间的相互关系。
  A)存储结构,物理结构    B)理想结构,抽象结构
  C)物理结构,逻辑结构    D)抽象结构,逻辑结构
2.在数据结构中,与所使用的计算机无关的是数据的( C )结构。
  A)存储   B)物理   C)逻辑   D)物理与存储
3.数据结构课程主要研究以下三方面的内容,它们是(D )。
  A)数据、数据元素、数据类型
  B)数据元素、数据类型、算法实现
  C)数据元素、数据的逻辑结构、数据的存储结构
  D)数据的逻辑结构、数据的存储结构、数据的运算
4.在以下的复杂度量级中,量级最低的是(B )。
  A)O(n)   B)O(log2n)    C)O(nlog2n)   D)O(n2)
5.在下列叙述中,正确的是(C )。
  A)数据的逻辑结构要考虑数据元素本身的内容
  B)不同类型的数据元素可以归类到同一的逻辑结构中
  C)数据元素之间的关联关系在数据的逻辑结构中体现
  D)数据元素是数据不可分割的最小标识单位
6.计算机算法必须具备输入、输出和(B )等五个特性。
  A)可行性、可移植性和可扩充性
  B)可行性、确定性和有穷性C
  C)确定性、稳定性和有穷性
  D)易读性、稳定性和安全性
7.算法分析的目的是(D )。
  A)找出数据结构的合理性  B)研究算法中的输入/输出关系
  C)分析算法的易读性      D)分析算法的效率以求改进
8.设n>=10,下面程序段的时间复杂度是(D )。
  for(i=10; i<n; i++)
  {  j=k=0;
     while(j+k<=i)
       if (j>k) k++;
       else  j++;
  }
  A)O(log2n)  B)O(n)   C)O(nlog2n)   D)O(n2)
9.计算机算法是指(D  )。
  A)计算方法     B)排序方法     
  C)调度方法     D)解决问题的有限运算序列
10.数据的定义取决于数据的逻辑结构,而数据的实现取决于数据的物理结构(A  )。
   A)正确          B) 不正确 
11.下面说法错误的是(A  ) 
   A)算法原地工作的含义是指不需要任何额外的辅助空间
   B)在相同的规模n下,复杂度为O(n)的算法在时间上一般优于复杂度O(2n)的算法
   C)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
   D)同一个算法,实现的语言级别越高,执行效率就越低
补充习题:判断
1. 数据元素是数据的最小单位。(  0 )
2. 记录是数据处理的最小单位。 (  0 )
3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;( 0  )
4. 算法的优劣与算法描述语言无关,但与所用计算机有关。(  0)
5. 健壮的算法不会因非法的输入数据而出现莫名其妙的状态。(1  )
6. 算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。(0   )
7. 数据的物理结构是指数据在计算机内的实际存储表示。(1 ) 
8. 数据结构的抽象操作的定义与具体实现有关。( 0 )
9. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构. (  0 ) 
补充习题:语句频度与时间复杂度
1.计算机执行下面的语句时,语句s的执行次数为: (n+3)(n-2)/2。
    for(i=l;i<n-l;i++) 
       for(j=n;j>=i;j--)
           s; 
2.下面程序段中带有下划线的语句执行次数的量级是( log2n2 ) 
    i=n*n
    while (i!=1)
         i=i / 2;
3.下面程序段中带下划线的语句的执行次数的数量级是(nlog2n )。
    i=1;
    while( i<n)
    {  for (j=1;j<=n;j++)
       {   x=x+1;
            i=i*2;
       }
    }
补充习题:语句频度与时间复杂度
4. 在下面的程序段中,对x的赋值语句的频度为: n(n+1)(n+2)/6   O(n3) 
    for(i=1;i<=n; i++)
       for(j=1;j<=i;j++)
           for (k=1;k<=j; k++)
                x=x+1;
5. 已知如下程序段,则各语句的频度为:
    for(i= n;i>=1; i- -)     //语句1      n+1
    {     x=x+1;                      //语句2      n 
          for(j= n;j>=i;j--) //语句3      n(n+3)/2
                y=y+1;                   //语句4      n(n+1)/2 
    }
补充习题:第二章
1.下列有关线性表的叙述中,正确的是(A  )。
  A)线性表中元素之间的关系是线性关系
  B)线性表中至少有一个元素
  C)线性表中的任一元素有且仅有一个直接前趋
  D)线性表中的任一元素有且仅有一个直接后继
2.下述哪一条是顺序存储结构的优点?(A  )
  A)存储密度大     B)插入元素方便
  C)删除元素方便   D)可方便地用于各种逻辑结构的存储表示
3.在一个长度为n的顺序表中,在第i个元素(1<=i<=n)之前插入一个新元素时需向后移动( D )个元素。
  A)1    B)n-i    C)n-i-1    D)n-i+1
4.如果某线性表中最常用的操作是取第i个元素和找第i个元素的前驱,那么采用( A )存储方式最节省时间。
  A)顺序表       B)单链表
  C)双链表       D)循环链表
5.对顺序存储的线性表,假设其长度为n,且在任何位置上插入元素操作都是等概率的。则插入一个元素时平均要移动表中的( A )个元素。
  A)n/2      B)(n+1)/2     C)(n-1)/2     D)n
6.下述哪一条是顺序存储结构的缺点?(C  )
  A)存储密度太大                
  B)随机存取
  C)一般要估计最大的需要空间 
  D)只能应用于少数几种逻辑结构的存储表示
7.在单链表中,增加头结点的目的是( C )。
  A)使单链表至少有一个结点
  B)标志表中首结点的位置
  C)方便运算的实现
  D)说明单链表是线性表的链式存储表示
8.单链表不具有的特点是( A )。
  A)可随机访问任一元素   B)插入和删除不需要移动元素
  C)不必事先估计存储空间 D)所需空间和线性表长度成正比
9.循环链表的主要优点是(D  )。 
  A)不再需要头指针了
  B)已知某个结点的位置后,能够容易找到他的直接前趋
  C)在进行插入、删除运算时,能更好的保证链表不断开
  D)从表中的任意结点出发都能扫描到整个链表
10.链表对于数据元素的插入与删除是(B  )。
   A)不需移动结点,不需改变结点指针
   B)不需移动结点,只需改变结点指针
   C)只需移动结点,不需改变结点指针
   D)既需移动结点,又需改变结点指针
11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若要在q和p所指结点之间插入s所指的结点,则执行( B )。
   A)s->next = p->next; p->next = s;
   B)q->next = s; s->next = p;
   C)p->next = s; s->next = q;
   D)p->next = s->next; s->next = p;
12.向一个有115个元素的顺序表中插入一个新元素并保持原来顺序不变,在等概率情况下平均要移动(C  )个元素。
   A) 115     B) 114     C) 58     D) 57 
13.带头结点的单链表Head为空表的判定条件是 (B   ) 。
   A) Head->next==Head   B) Head->next==NULL
   C) Head!=NULL         D) Head==NULL
14.若要求能快速地实现在链表的末尾插入结点和删除第一个结点的运算,则选择(B   )最合适。
   A) 单链表       B) 带尾指针的单循环链表
   C) 双链表       D) 双循环链表
15.给定有n个元素的向量,建立一个有序单链表的时间复杂度是( D )。
   A)O(n)    B)O(log2n)     C)O(nlog2n)    D. O(n2)
16.线性表采用链式存储时,其地址( C )。
   A)必须是连续的     B)必须是不连续的
   C)连续与否均可     D)部分地址必须是连续的
17.在一个具有n个结点的有序单链表中,插入一个新的结点并使之仍然有序的时间复杂度是( A )。
   A)O(n)   B)O(log2n)    C)O(1)   D)O(n2)
补充习题:第三章
1.在下列排序算法中,时间复杂度不受数据初始特性影响,恒为O(n2)的是(C  )。
  A)插入排序  B)冒泡排序  C)选择排序  D)堆排序
2.在各种排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为(C  )。
  A)希尔排序  B)冒泡排序  C)插入排序  D)选择排序
3.快速排序方法在( C)情况下最不利于发挥其长处。
  A)要排序的数据量太大 
  B)要排序的数据含有多个相同值
  C)要排序的数据已基本有序     
  D)要排序的数据个数为奇数
4.已知10个数据元素为(54,28,16,34,73,62,95,60,26,43),对该数列按从小到大排序,经过一趟冒泡排序后的序列为( B)。
  A)16,28,34,54,73,62,60,26,43,95
  B)28,16,34,54,62,73,60,26,43,95
  C)28,16,34,54,62,60,73,26,43,95
  D)16,28,34,54,62,60,73,26,43,95
5.一组记录的关键字为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准元素得到的一次划分结果为( C )。
  A)38,40,46,56,79,84   B)40,38,46,79,56,84 
  C)40,38,46,56,79,84   D)40,38,46,84,56,79 
6.用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下:
  (1)20,15,21,25,47,27,68,35,84 
  (2)15,20,21,25,35,27,47,68,84
  (3)15,20,21,25,27,35,47,68,84
则所采用的排序方法是(D  )。
  A)选择排序  B)希尔排序  C)归并排序  D)快速排序
7.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( A)。 
  A)插入排序      B)快速排序
  C)归并排序      D)选择排序
8.一组记录的排序码为(20,29,11,74,35,3,8,56),则利用堆排序方法建立的初始(小顶)堆为( B )。
  A)20,29,11,74,35,3,8,56
  B)3,29,8,56,35,11,20,74
  C)3,8,11,20,29,35,56,74
  D)20,29,3,8,11,35,74,56
9.下列关键码序列中,属于堆的是(A )。
  A)(15,30,22,93,52,71) 
  B)(15,71,30,22,93,52)
  C)(15,52,22,93,30,71)
  D)(93,30,52,22,15,71)
10.若要求尽可能快地对实数数组进行稳定的排序,则应选(C )。
   A)快速排序   B)堆排序   C)归并排序   D)基数排序
11.下列排序算法的时间复杂度最小的是(D )。
   A)冒泡排序        B)希尔排序
   C)简单选择排序    D)归并排序
12.设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好(C  )排序法。
   A)起泡排序  B)快速排序  C)堆排序  D)基数排序
13.插入排序算法在每一趟都能选取出一个元素放在其最终的位置上。(B )
   A)正确         B)不正确
14.直接插入排序是不稳定的排序方法。(B  )
   A)正确     B)不正确
15.直接插入排序的最坏情况是初始序列为(B  )序。
   A)正    B)反    C)正和反    D)无
16.在各排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为(D   )。
   A)希尔排序   B)归并排序   C)插入排序  D)选择排序
补充习题:第四章
1.栈的特点是( B  )。
  A)先进先出      B)后进先出
  C)进优于出      D)出优于进
2.栈和队列都是(C )。  
  A)顺序存储的线性结构   B)链式存储的线性结构
  C)操作受限的线性结构   D)操作受限的非线性结构
3.链栈与顺序栈相比,有一个比较明显的优点是(B )。
  A)插入操作更加方便    B)通常不会出现栈满的情况
  C)不会出现栈满的情况  D)删除操作更加方便
4.一个栈的入栈序列是a,b,c,d, 则下列序列中不可能的输出序列是( D )。
  A)acbd       B)dcba
  C)acdb       D)dbac
5.设有一空栈,现有输入序列为1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH后,输出序列为(C  )。
  A)5,4,3,2,1   B)2,1   C)2,3   D)2,4 
6.下面哪种数据结构不适合作栈的存储结构( D )。
  A)数组   B)单链表   C)静态链表   D)二叉树结构
7.设计一个判别表达式中左右括号是否配对出现的算法,最好采用( C )结构。
  A)线性表   B)队列   C)堆栈   D)树
8.队列的操作原则是( A  ) 。
  A)先进先出       B)先进后出
  C)只能进行插入   D)只能进行删除 
5.设有一空栈,现有输入序列为1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH后,输出序列为(C  )。
  A)5,4,3,2,1   B)2,1   C)2,3   D)2,4 
6.下面哪种数据结构不适合作栈的存储结构( D )。
  A)数组   B)单链表   C)静态链表   D)二叉树结构
7.设计一个判别表达式中左右括号是否配对出现的算法,最好采用( C )结构。
  A)线性表   B)队列   C)堆栈   D)树
8.队列的操作原则是( A  ) 。
  A)先进先出       B)先进后出
  C)只能进行插入   D)只能进行删除 
12.判断当字符序列 x5y 作为字符堆栈的输入时,输出长度为3的且可以作为C语言标识符的个数是( A  )。
   A) 3个     B) 4个     C) 5个     D) 6个 
13.采用不带尾指针的单链表方式表示一个栈,便于结点的插入与删除。栈顶结点的插入与删除通常在链表的(C )进行。
   A)任意位置      B)链表头尾两端
   C)链表头一端    D)链表尾一端
14.递归函数f(n)=f(n-1)十n(n>1)的递归出口,比较合理的是(B   )。
   A)f(1)=0   B)f(1)=1   C)f(0)=0    D)f(n)=n 
15.在一个链队列中,若Q.front、Q.rear分别为队首、队尾指针,则插入s所指结点的操作为(B   )。
   A) Q.front->next=s; Q.front=s;     
   B) Q.rear->next=s; Q.rear=s;
   C) s->next=Q.front; Q.rear=s;
   D) s->next=Q.front; Q.front=s;
16.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是( D  )。
   A) i-j-1   B) i-j   C) j-i+1   D. 不确定的
补充习题:
1.串是一种特殊的线性表,其特殊性体现在(C   ) 。 
  A)可以顺序存储          B)可以用链表存储       
  C)数据元素是一个字符    D)数据元素可以是多个字符
2.串是( D )。 
  A)少于一个字母的序列    B)任意个字母的序列
  C)不少于一个字符的序列  D)有限个字符的序列
3.串的长度是( D )。
  A)串中不同字母的个数  
  B)串中不同字符的个数
  C)串中所含字符的个数,且大于0  
  D)串中所含字符的个数
4.设有两个串p和q,求q在p中首次出现的位置的运算( B ). 
  A)连接      B)模式匹配
  C)求子串     D)求串长
5.若某串的长度小于一个常数,则采用(C  )存储方式最为节省空间。
  A)链式     B)堆结构      C)顺序
6.串中任意多个连续字符组成的子序列称为该串的子串(A ).
  A)正确         B)不正确
7.如果两个串含有相同的字符集,则说两者相等(B  ). 
  A)正确         B)不正确
8.存取数组中任一元素的时间都是相等的,这种存取方式为(B )存取方式。
  A)顺序    B)随机    C)线性    D)非线性 
9.设一个一维数组第一个元素的存储单元的地址是100,每个元素的长度是6,则它的第5个元素的地址是(D )。
  A)130     B)105    C)106    D)124
10.设n阶方阵是一个上三角矩阵,则需要存储的元素个数是(B )。
  A)n2/2   B)n(n+1)/2    C)n   D)n2
11.对一些特殊矩阵采用压缩存储的目的主要是为(B )。
  A)表达变得简单         B)减少不必要的存储空间的开销
  C)去掉矩阵中的多余元素 D)对矩阵元素的存取变得简单 
12.三元组表不包括( D )。
   A) 行数   B) 列数   C) 元素值   D) 元素总数 
13.设已知一个稀疏矩阵的三元组如下:(1,2,3),(1,6,1), (3,1,5),(3,2,-1),(4,5,4),(5,1,-3),则其转置矩阵的三元组表中第3个三元组为(A  )。 
   A) (2,1,3)       B) (3,1,5)      
   C) (3,2,-1)      D) (2,3,-1) 
14.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点(A )
   A)正确        B)不正确
15.两维数组是一种非线性结构。(B  )
   A)正确        B)不正确
16.数组A三维的长度分别为b3,b2,b1;每个数组元素占一个存储单元;LOC[0,0,0]为基址。若以行序为主序,则元素A[i][j][k]的地址为(A  )(其中0<=i<b3,0<=j<b2,0<=k<b1)
   A)LOC[0,0,0]+i*b2*b1+j*b1+k 
   B)LOC[0,0,0]+i*b3*b2+j*b1+k
   C)LOC[0,0,0]+b3*i+b2*j+k
   D)LOC[0,0,0]+b3*i*j+b2*j+k