数据结构试题答案

时间:
管理员
分享
标签: 数据结构 试题 答案

管理员

摘要:

数据结构试题答案  一、单项选择题(每题2分,共30分)  1.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间。  A) 单链表 B) 双链表 C) 单向循环链表 D) 顺序表  2.串是任意有限个( )。  A) 符号构成的序列 B) 符……

数据结构试题答案

  一、单项选择题(每题2分,共30分)

  1.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用(  )存储方式最节省时间。

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

  2.串是任意有限个(  )。

  A) 符号构成的序列                      B) 符号构成的集合

  C) 字符构成的序列                      D) 字符构成的集合

  3.设矩阵A的任一元素aij(1≤i,j≤10)满足:

  aij≠0;(i≥j,1≤i,j≤10)

  aij=0; (i<j,1≤i,j≤10)

  现将A的所有非0元素以行序为主序存放在首地址为2000的存储区域中,每个元素占有4个单元,则元素A[9,5]的首地址为(  )。

  A) 2340             B) 2336            C) 2164              D) 2160

  4.如果以链表作为栈的存储结果,则出栈操作时(  )。

  A) 必须判别栈是否为满                  B) 对栈不作任何判别

  C) 必须判别栈是否为空                  D) 判别栈元素的类型

  5.设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为(  )。

  A) front = front+1                     B) front = (front+1) % m

  C) rear = (rear+1) % m                 D) front = (front+1) % (m+1)

  6.深度为6(根的层次为1)的二叉树至多有(  )结点。

  A) 64               B) 32              C) 31                D) 63

  7.将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次堆结点编号,根结点的编号为1。编号为49的结点X的双亲的编号为(  )。

  A) 24               B) 25              C) 23                D) 无法确定

  8.设有一个无向图 和 ,如果 为 的生成树,则下面不正确的说法是(  )。

  A)  为 的子图                       B)  为 的连通分量

  C)  为 的.极小连通子图且       D)  为 的一个无环子图

  9.用线性探测法查找闭散列表,可能要探测多个散列地址,这些位置上的键值(  )。

  A) 一定都是同义词                      B) 一定都不是同义词

  C) 多相同                               D) 不一定都是同义词

  10.二分查找要求被查找的表是(  )。

  A) 键值有序的链接表                    B) 链接表但键值不一定有序

  C) 键值有序的顺序表                    D) 顺序表但键值不一定有序

  11.当初始序列已经按键值有序,用直接插入算法对其进行排序,需要循环的次数为(  )。

  A)               B)           C)             D) n-1

  12.堆是一个键值序列 ,对 ,满足(  )。

  A)                        B)

  C)  且 ( )      D)  或 ( )

  13.使用双向链表存储数据,其优点是可以(  )。

  A) 提高检索速度                        B) 很方便地插入和删除数据

  C) 节约存储空间                        D) 很快回收存储空间

  14.设计一个判别表达式中左右括号是否配对出现地算法,采用(  )数据结构最佳。

  A) 线性表地顺序存储结构                B) 栈

  C) 队列                                D) 线性表达的链式存储结构

  15.设深度为k的二叉树上只有度为0和2的结点,则此类二叉树中所含的结点数至少为(  )。

  A) k + 1            B) 2k              C) 2k - 1             D) 2k + 1

  二、填空题(每空2分,共28分)

  1.设r指向单链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是_____________________________________________r=s;r->next=NULL。

  2.在单链表中,指针p所指结点为最后一个结点的条件是___________________。

  3.设一个链栈的栈顶指针是ls,栈中结点格式为              ,栈空的条件为_____________。如果栈不为空,则出栈操作为p=ls;______________;free(p)。

  4.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有________个叶子结点。

  5.树有三种常用的存储结构,即孩子链表法,孩子兄弟链表法和____________。

  6.n个顶点的连通图的生成树有__________条边。

  7.一个有向图G中若有弧 、 和 ,则在图G的拓扑序列中,顶点 的相对位置为___________。

  8.设表中元素的初始状态是按键值递增的,分别用堆排序、快速排序、冒泡排序和归并排序方法对其进行排序(按递增顺序),________最省时间,__________最费时间。

  9.下面是将键值为x的结点插入到二叉排序树中的算法,请在划线处填上适当的内容。

  Typedef struct pnode

  { int key;

  struct node * left, * right;

  }

  Void search (int x; pnode t )

  { if (_____________)

  {p = malloc (size);

  p->key=x;p->left=NULL;

  p->right=NULL;

  t=p;

  }

  else

  if (xkey) search (x,t->left)

  else  _________________

  }

  10.线性表的____________的主要优点是从表中任意结点出发都能访问到所有结点。而使用____________,可根据需要在前后两个方向上方便地进行查找。

  三、应用题(每题10分,共30分)

  1.在双链表中,要在指针变量P所指结点之后插入一个新结点,请按顺序写出必要的算法步骤。(设:P所指结点不是链表的首尾结点,q是与p同类型的指针变量)

  2.已知待排序文件各记录的排序码顺序如下:

  72  73  71  23  94  16  05  68

  请列出快速排序过程中每一趟的排序结果。

  四、算法题(共12分)

  编写算法,实现单链表上的逆置运算(说明:即将单链表中的元素次序反转)

  参考答案:

  一、单项选择题(每题2分,共30分)

  1.D   2.C  3.D   4.C   5.D   6.D   7.A   8.B   9.D   10.C   11.D   12.C  13.A   14.B   15.C

  二、填空题(每空2分,共28分)

  1. r->next=s;                             2. p->next=NULL;

  3. ls = = NULL; ls=ls->link。 4. 12

  5. 双亲表示法   6. n-1

  7. i,j,k    8. 冒泡排序,快速排序

  9. t= =NULL,search(x,t->right); 10.循环链表,双向链表

  三、应用题(每题10分,共30分)

  1.new(q);

  q↑.llink ← p;

  q↑.rlink ← p↑.rlink;

  p↑.rlink↑.llink ← q;

  p↑.rlink ← q。

  评分细则:按顺序每对一个给2分,全对计10分。

  2.各趟结果如下:

  [68 05 71 23 16] 72 [94 73]

  [16 05 23] 68 [71] 72 [94 73]

  [05] 16 [23] 68 [71] 72 [94 73]

  05 16 [23] 68 [71] 72 [94 73]

  05 16 23 68 71  72 [94 73]

  05 16 23 68 71  72 [73] 94

  05 16 23 68 71  72  73 94

  四.算法题(共12分)

  void invert( pointer head)

  {p=NULL;

  while ( head<>NULL)

  {u=head;

  head=head->next;

  u->next=p;

  p=u;

  }

  head=p;

  }