最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数据结构题库

来源:动视网 责编:小OO 时间:2025-09-24 09:59:01
文档

数据结构题库

一、单项选择题(本大题共15小题,第小题2分,共30分)在每小题列出的四个选项中只有一个符合题目要求,请将其代码填在题后的括号内。错选或未选均无分。1.算法必须具备输入、输出和[C]A.计算方法B.排序方法C.解决问题的有限运算步骤D.程序设计方法2.有n个节点的顺序表中,算法的时间复杂度是O(1)的操作是[A]A.访问第i个节点(1≤i≤n)B.在第i个节点后插入一个新节点(1≤i≤n)C.删除第i个节点(1≤i≤n)D.将n个节点从小到大排序3.单链表的存储密度[C]A.大于1B.等于1C
推荐度:
导读一、单项选择题(本大题共15小题,第小题2分,共30分)在每小题列出的四个选项中只有一个符合题目要求,请将其代码填在题后的括号内。错选或未选均无分。1.算法必须具备输入、输出和[C]A.计算方法B.排序方法C.解决问题的有限运算步骤D.程序设计方法2.有n个节点的顺序表中,算法的时间复杂度是O(1)的操作是[A]A.访问第i个节点(1≤i≤n)B.在第i个节点后插入一个新节点(1≤i≤n)C.删除第i个节点(1≤i≤n)D.将n个节点从小到大排序3.单链表的存储密度[C]A.大于1B.等于1C
一、单项选择题(本大题共15小题,第小题2分,共30分)在每小题列出的四个选项中只有一个符合题目要求,请将其代码填在题后的括号内。错选或未选均无分。

1. 算法必须具备输入、输出和                                    [ C    ]

A. 计算方法         B. 排序方法

C.解决问题的有限运算步骤  D. 程序设计方法

2. 有n个节点的顺序表中,算法的时间复杂度是O(1)的操作是                     [  A   ]

A.访问第i个节点(1≤i≤n)

B.在第i个节点后插入一个新节点(1≤i≤n)

C.删除第i个节点(1≤i≤n)

D.将n个节点从小到大排序

3.单链表的存储密度                                       [ C    ]

A.大于1        B. 等于1

C.小于1        D. 不能确定

4.设将整数1,2,3,4,5依次进栈,最后都出栈,出栈可以在任何时刻(只要栈不空)进行,则出栈序列不可能是                                                      [ B    ]

A.23415        B. 54132

C.23145                D. 15432

5. 循环队列SQ的存储空间是数组d[m],队头、队尾指针分别是front和rear,则执行出队后其头指针front值是                                                    [  D   ]

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

C. front=(front-1)%m         D. front=(front+1)%m

6.  在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是                                                                  [  B   ]

A. O(1)         B. O(n)       C. O(n2)       D. O(nlogn)

7. 设二维数组A[0..m-1][0..n-1]按行优先顺序存储,则元素A[i][j]的地址为                                        [ B   ]

A. LOC(A[0][0])+(i*m+j)       B.LOC(A[0][0])+(i*n+j)

C.LOC(A[0][0])+[(i-1)*n+j-1]  D.  LOC(A[0][0])+[(i-1)*m+j-1] 

8. 一个非空广义表的表头                                      [ D   ]

A.一定是子表       B. 一定是原子

C.不能是子表       D. 可以是原子,也可以是子表

9.具有n个节点的完全二叉树的深度为                                [ A   ]

A.log2(n+1) -1               B. log2n+1   

C. log2n                       D. log2n

10. 若要惟一地确定一棵二叉树,只需知道该二叉树的                         [ D   ]

A.前序序列         B. 中序序列

C.前序和后序序列      D. 中序和后序序列

11.在一个无向图中,所有顶点的度数之和等于图的边数的   倍                  [ C   ]

A.1/2                      B. 1

C.  2                       D. 4

12. 拓扑排序运算只能用于                                      [ C   ]

A.带权有向图         B. 连通无向图

C.有向无环图         D. 无向图

13.在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是                          [ D   ]

A.希尔排序          B. 冒泡排序

C.插入排序          D. 选择排序

14.下列排序算法中时间复杂度不受数据初始状态影响,恒为O(n2)的是                                         [ C   ]

A.堆排序           B. 冒泡排序

C.直接选择排序        D. 快速排序

15.二分查找要求节点                                                         [ A   ]

A.有序、顺序存储        B. 有序、链接存储

C.无序、顺序存储        D. 无序、链接存储

二、填空题(本大题共10小题,每小题2分,共20分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。

16.数据的逻辑结构分为两大类,它们是线性结构和   非线性结构         。

17.在单链表中(假设结点指针域名称为next),删除指针P所指结点的后继结点的语句是       p->next=p->next->next          。

18.已知循环队列用数组data[n]存储元素值,用front,rear分别作为头尾指针,则当前元素个数为     (rear-front+n)%n                  。

19. 若n为主串长,m 为子串长,则串的朴素匹配算法最坏的情况下需要比较字符的总次数为_______(n-m+1)×m_           _。

20. 广义表((a),((b),j,(((d)))))的表尾是____(((b),j,(((d)))))___       _____。

21. 已知二叉树有61个叶子节点,且仅有一个孩子的节点数为45,则总节点数为____166       __。

22. 解决计算机与打印机之间速度不匹配问题,须要设置一个数据缓冲区,应是一个 队列  结构。

23. n 个顶点e条边的图采用邻接表存储,深度优先遍历算法的时间复杂度为_________O(n+e)___________。

24. 对于n个关键字的集合进行冒泡排序,在最坏情况下所需要的时间为_____O(n2)________。

25.在一个长度为n的顺序表中的第i个元素(1≤i≤n)之前插入一个元素时,需向后

移   n-i+1              个元素。(第i个元素一直到第n个元素都要逐一向后移动,故为n-i+1)

三、解答题(本大题共4小题,共25分)

26. 对于下面的稀疏矩阵,画出其三元组法存储表示(假设下标从0开始)。(5分)

      

0   0  14   0   0   0

0   0   0   0   -6  0

7   0   0   0   0   24

0   0   0   18  0   0

0   15  0   0   0   0

答案:

0214
14-6
207
2524
3318
4115

   27.  已知一棵二叉树的中序序列和后序序列分别如下,请画出该二叉树。(5分)

      中序序列:D I G J L K B A E C H F

      后序序列:I L K J G D B E H F C A

答案:

28. 设有一个关键码的输入序列{55,31,11,37,46,73,63,02,07},(7分)

(1)从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。(3分)

(2)计算该平衡二叉搜索树在等概率下的搜索成功的平均搜索长度和搜索不成功的平均搜索长度。(4分)

29. 已知一个图的邻接表如下所示。(8分)

(1)画出该图的图形;(4分)

(2)根据邻接表分别画出从顶点a出发进行深度优先和广度优先遍历所生成的生成树。(4分)

0

1

2

3

4

5

答案:

四、算法阅读题(本大题共3小题,每小题5分,共15分)

30.设线性表的n个结点定义为(a0,a1,…,an-1),在顺序表上实现的插入和删除算法如下,请在空白处填入适当内容。(顺序表的最大可容纳项数为MaxSize)

Template int SeqList::Insert(Type &x, int i) {

    If (i<0 || i>last+1 || last==     (1)       ) return 0;

    Else {

          Last++;

For(int j=last;j>i;j--) data[j]=      (2)     ;

              (3)        ;

          Return 1;

      }

}

Template int seqList::Remove(Type &x){

    int i=Find(x);

if(i>=0) {

        last--;

        for (int j=   (4)     ;j<=last;j++) data[j]=  (5)        ;

        return 1;

    }

    return 0;

}

答案:

(1)   MaxSize-1      

(2)   data[j-1]      

(3)   Data[i]=x

(4)   i              

(5)   data[j+1]  

31.阅读下面的算法,请回答下列问题:

(1)试说明算法的功能。

(2)当执行该程序时,输入12345678-1,输出什么结果?

#define StackSize 200

typedef int DataType;

typedef struct{

DataType data[StackSize];

int top;

}SeqStack;

void Push(SeqStack *s,DataType x)

{

if(s->top!=StackSize-1)

s->data[++s->top]=x;

}

DataType Pop(SeqStack *s)

{

if(s->top!=-1)

return s->data[s->top--];

}

void main( )

{

   DataType i;

   SeqStack s;

   s.top=-1;

   scanf(“%d”,&i);

   while(i!=-1)

{

  push(&s,i);

 scanf(“%d”,&i);

}

while(s->top!=-1)

{

   i=Pop(&s);

   printf(“%6d”,i);

}

}

答案:

(1)程序的功能是把输入的一串整数(用-1做结束标记) ,按照与输入相反的次序输出。用栈实现这一功能。

(2)输出结果  8   7   6   5   4   3   2   1。 

32. 已知二叉树的存储结构为二叉链表,阅读下面算法。说明该算法的功能。

Template

int BinaryTree::height(BinTreeNode *t){

    if(t==NULL)  return –1;

int h1=height(t->leftChild);

int hr=height(t->rightChild);

return 1+(h1>hr?h1:hr);

        }

答案:该算法的功能是统计二叉树的高度。

五、算法设计题(本题共10分)

33.设一棵二叉树以二叉链表表示,试以成员函数形式编写有关二叉树的递归算法。

(1)统计二叉树中度为1的结点个数;(5分)

(2)统计二叉树中度为2的结点个数。(5分)

          (提示:递归算法如32题所示)

解答:(1)统计二叉树中度为1的结点个数。

Template

Int BinaryTree ::Degree1(BinTreeNode *t)const{

If(t==NULL) return 0;

If(t->leftchild!=NULL &&t->rightchild==NULL || t->leftchild==NULL &&t->rightchild!=NULL)

Return 1+Degree1(t->leftchild)+Degree1(t->rightchild);

Return Degree1(t->leftchild)+Degree1(t->rightchild);

}

(2) 统计二叉树中度为2的结点个数。

Template

Int BinaryTree ::Degree2(BinTreeNode *t)const{

If(t==NULL) return 0;

If(t->leftchild!=NULL &&t->rightchild!=NULL )

Return 1+Degree2(t->leftchild)+Degree2(t->rightchild);

Return Degree2(t->leftchild)+Degree2(t->rightchild);

}

文档

数据结构题库

一、单项选择题(本大题共15小题,第小题2分,共30分)在每小题列出的四个选项中只有一个符合题目要求,请将其代码填在题后的括号内。错选或未选均无分。1.算法必须具备输入、输出和[C]A.计算方法B.排序方法C.解决问题的有限运算步骤D.程序设计方法2.有n个节点的顺序表中,算法的时间复杂度是O(1)的操作是[A]A.访问第i个节点(1≤i≤n)B.在第i个节点后插入一个新节点(1≤i≤n)C.删除第i个节点(1≤i≤n)D.将n个节点从小到大排序3.单链表的存储密度[C]A.大于1B.等于1C
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top