数据结构试题库.docx

上传人:b****6 文档编号:8535490 上传时间:2023-01-31 格式:DOCX 页数:29 大小:125.60KB
下载 相关 举报
数据结构试题库.docx_第1页
第1页 / 共29页
数据结构试题库.docx_第2页
第2页 / 共29页
数据结构试题库.docx_第3页
第3页 / 共29页
数据结构试题库.docx_第4页
第4页 / 共29页
数据结构试题库.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数据结构试题库.docx

《数据结构试题库.docx》由会员分享,可在线阅读,更多相关《数据结构试题库.docx(29页珍藏版)》请在冰豆网上搜索。

数据结构试题库.docx

数据结构试题库

Test1

一、单项选择题(每题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

现将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的结点插入到二叉排序树中的算法,请在划线处填上适当的内容。

Typedefstructpnode

 {intkey;

  structnode*left,*right;

}

Voidsearchinsert(intx;pnodet)

/*t为二叉排序树根结点的指针*/

{if(_____________)

 {p=malloc(size);

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

  p->right=NULL;

  t=p;

}

else

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

 else _________________

}

10.线性表的____________的主要优点是从表中任意结点出发都能访问到所有结点。

而使用____________,可根据需要在前后两个方向上方便地进行查找。

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

1.在双链表中,要在指针变量P所指结点之后插入一个新结点,请按顺序写出必要的算法步骤。

(设:

P所指结点不是链表的首尾结点,q是与p同类型的指针变量)

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

72 73 71 23 94 16 05 68

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

四、算法题(共12分)

编写算法,实现单链表上的逆置运算(说明:

即将单链表中的元素次序反转)

 《数据结构》2004学年面授试卷答案

一、单项选择题(每题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,searchinsert(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分)

  voidinvert(pointerhead)

    {p=NULL;

     while(head<>NULL)

       {u=head;

        head=head->next;

        u->next=p;

        p=u;

}

head=p;

}

六、      编写算法(10分)。

写出向二叉排序树中插入一个元素的非递归算法。

Voidinsert(BtreeNode*BST,constElemType&item)

{   BtreeNode*t=BST,*parent=NULL;

   While(t!

=NULL){

      Parent=t;

      If(itemdata)t=t->left;

      Elset=t->right;

   }

   BtreeNode*p=newBtreeNode;

   p->data=item;

   p->left=p->right=NULL;

   if(parent==NULL)BST=p;

   else if(itemdata)   parent->left=p;

   else parent->right=p;

}

阅读算法,回答问题(每小题8分,共16分)

1.VoidMADE(Lnode*&H1)         2.VoidAE(Stack&S)

 {                     {

Lnode*p;                 InitStack(S);

p=H1;                   Push(S,30);

H1=NULL;                 Push(S,40);

while(p!

=NULL)               Push(S,50);

{                     intx=Pop(S)+2*Pop(S);

 lnode*q=p;                Push(S,x);

 p=p->next;                inti,a[4]={5,8,12,15};

 q->next=h1;                for(i=0;i<4;i++)

 H1=q;                  Push(S,a[i]);

}                     while(!

StackEmpty(S))

 }                         cout<

该算法的功能为:

              该算法被调用后得到的输出结果为:

将原链表逆序                15 12 8 5 130 30

 

Test2

北京邮电大学数据结构期末考试试题(A卷) 

一.    单项选择题(2分/题) 

1.    一个栈的输入序列为12345,则下列序列中是栈的输出序列的是(A)。

 

A.23415        B.54132      C.31245      D.14253 

2.    设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为(D)。

 

A.r-f          B.r-f+1       C.(r-f) mod n +1      D.(r-f+n) mod n 

 

3.    二叉树在线索化后,仍不能有效求解的问题是(D)。

 

A.先序线索二叉树中求先序后继    B. 中序线索二叉树中求中序后继      C.中序线索二叉树中求中序前驱    D. 后序线索二叉树中求后序后继 

4.    求最短路径的FLOYD算法的时间复杂度为(D)。

 

A.O(n)          B.O(n+e)        C.O(n2)          D.O(n3) 

5.    一棵左右子树不空的二叉树在先序线索化后,其空指针域数为(B)。

 

A.0          B.1       C.2      D.不确定 

6.    数组A[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为(A)。

 

      A.1140        B.1145       C.1120      D.1125 

7.    在下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是(A)。

 

A.快速排序          B.希尔排序       C.冒泡排序          D.堆排序 

8.    对有18个元素的有序表做折半查找,则查找A[3]的比较序列的下标依次为(C)。

 

A.1-2-3          B.9-5-2-3       C.9-5-3     D. 9-4-2-3 

9.    下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是(D)。

 

A.堆排序          B.冒泡排序       C.快速排序      D.直接插入排序 

10.    在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为-1,右孩子的平衡因子为0,则做(B)型调整以使其平衡。

 

A.LL          B.LR       C.RL      D.RR 

二.    判断题(1分/题) 

1.线性表的长度是线性表所占用的存储空间的大小。

 F

2.双循环链表中,任意一结点的后继指针均指向其逻辑后继。

3.在对链队列做出队操作时,不会改变front指针的值。

4.如果两个串含有相同的字符,则说它们相等。

5.如果二叉树中某结点的度为1,则说该结点只有一棵子树。

6.已知一棵树的先序序列和后序序列,一定能构造出该树。

7.图G的一棵最小代价生成树的代价未必小于G的其它任何一棵生成树的代价。

8.图G的拓扑序列唯一,则其弧数必为n-1(其中n为顶点数)。

9.对一个堆按层次遍历,不一定能得到一个有序序列。

10.直接选择排序算法满足:

其时间复杂度不受数据的初始特性影响,为O(n2)。

T  

三.    填空题(2分/空) 

1.已知完全二叉树的第8层有8个结点,则其叶子结点数是(68)。

68+8-4 

2.将下三角矩阵A[1..8,1..8]的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占4个单元,则A[7,5]的地址是(1100)。

 

3.有n个顶点的强连通有向图G至少有(n)条弧。

 

4.有n个结点并且其高度为n的二叉树的数目是(2^(n-1))。

 

5.高度为8的平衡二叉树的结点数至少是(54)。

 

6.3个结点可构成(5)棵不同形态的树。

 

7、给出冒泡排序和快速排序的最好情况、平均情况和最坏情况下的时间复杂度。

四、设计一个算法,判断一个算术表达式中的括号是否配对。

算术表达式保存在带表头结点的单循环链表中,每个结点有两个域:

ch和link,其中ch域为字符类型。

南开大学98考研题

一、(8分)给出数组A∶ARRAY[3..8,2..6]ofINTEGER;当它内存中按行存放和按列存放时,分写出数组元素A[i,j]地址计算公式(设每个元素站两个存储单元)。

二、(12分)于对于有向无环图

叙述求拓扑有序序列的步骤;

对于以下的图,写出它的四个不同的拓扑有序序列

三、(12分)已知一棵二叉树按中序遍历时个结点被访问的次序和这棵二叉树按后序遍历时各结点被访问的次序,是否唯一确定这棵二叉树的结构?

为什么?

若已知一棵叉树按先序遍历时各结点被访问的次序和这棵按后序遍历时各结点访问的次序,能否唯一确定这棵二叉树的结构?

为什么?

 

七、写出在二叉排序树中删除一个结点的数法,使删除后仍为二叉排序树。

设删除结点由指针P所指,其双亲结点由指针f所指,并假设被删除结点是其双亲结点的右孩子。

用类PASCAL(或C)语言将上述算法写为过程形式。

(南开考研题)

八、给出一组关键字:

29,18,25,47,58,12,51,10,分别写出下列各种排序方法进行排序时的变化过程:

(南开考研题)

1.归并排序每归并一次书写一个次序。

2.快速排序每规划一次书写一个次序。

3.堆排序先建成一个堆,然后每从堆顶取下一个元素后,将堆调整一次

Test3

一、选择题(单项选择,每小题2分,共计20分)

1、在数据结构中,与所使用的计算机无关的是。

A.存储结构B.物理结构C.物理和存储结构D.逻辑结构

2、线性表采用链式存储结构时,其地址是。

A.必须是连续的B.一定是不连续的

C.部分地址必须是连续的D.连续与否均可以

3、在下列链表中不能从当前结点出发访问到其余各结点的是。

A.单链表B.单循环链表C.双向链表D.双向循环链表

4、设一个栈的进栈序列是a,b,c,d,进栈的过程中可以出栈,不可能的出栈序列是。

A.d,c,b,aB.c,d,b,aC.d,c,a,bD.a,b,c,d

5、设循环队列中数组的下标是0~N-1,其头尾指针分别为f和r,则其元素个数为。

A.r–fB.r-f-1C.(r-f)%N+1D.(r-f+N)%N

6、串是。

A.不少于一个字母的序列B.任意个字母的序列

C.不少于一个字符的序列D.有限个字符的序列

7、对稀疏矩阵采用压缩存储,其缺点之一是。

A.无法判断矩阵有多少行和多少列

B.无法根据行列号查找某个矩阵元素

C.无法根据行列号计算矩阵元素的存储地址

D.使矩阵元素之间的逻辑关系更加复杂

8、以下说法错误的是。

A.一般在哈夫曼树中,权值越大的叶子离根结点越近

B.哈夫曼树中没有度数为1的分支结点

C.若初始森林中共有n棵二叉树,最终求得的哈夫曼树中共有2n-1个结点

D.若初始森林中共有n棵二叉树,进行2n-1次合并后才能剩下最终的哈夫曼树

9、任何一个无向连通图最小生成树。

A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在

10、只有在顺序存储结构上才能实现的查找方法是法。

A.顺序查找B.二分查找C.树型查找D.哈希查找

二、填空题(每题1分,共计10分)

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

个元素。

2、只允许在表的一端进行插入,而在另一端进行删除元素操作的线性表称为。

3、若串S=’software’(串长度为8),其子串数目是个。

4、一个n×n的对称矩阵,如果以行或列为主序放入内存,则容量为。

5、对于广义表((a,b),(()),(a,(b)))来说,其有个元素。

6、某棵树的的结点A有3兄弟,而且结点B是A的双亲,则结点B的度是。

7、n个结点的二叉树,最大高度是。

8、克鲁斯卡尔(Kruskal)算法适用于求的网的最小生成树。

9、在各种查找方法中,其平均查找长度与结点个数n无关的查找方法是。

10、对关键字序列{13,11,54,26,14,36,77},用筛选法建堆,必须从键值为的开始。

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

1、已知某二叉树中序遍历的结果是ABC,试画出其可能的二叉树五种形态。

(10分)

2、已知某带权无向图如下图所示。

图1.带权无向图G

(1)请用邻接矩阵法表示该图。

(4分)

(2)从顶点0出发,采用Prim算法画示最小生成树的过程。

(6分)

3、设散列表为T[0..12],散列函数为H(key)=key%13,给定键值序列是{39,36,28,38,44,15,42,12,06,25}。

(1)请画出用拉链法处理冲突时所构造的散列表。

(6分)

(2)求出在等概率情况下,查找成功时的平均查找长度。

(4分)

 

4、已知排序码值序列{17,18,60,40,7,32,73,65,85},排序后成后非递减序列,请写出冒泡排序每一趟的排序结果。

(10分)

四、算法阅读题(每题10分,共计20分)。

1、已知二叉树的结点数据类型如下:

typedefstructnode

{

ElemTypedata;//数据元素

structnode*lchild;//指向左孩子

structnode*rchild;//指向右孩子

}BTNode;

阅读下列二叉树算法,回答问题。

intfun1(BTNode*b)

{

intlchilddep,rchilddep;

if(b==NULL)

return0;

else

{

lchilddep=fun1(b->lchild);

rchilddep=fun1(b->rchild);

return(lchilddep>rchilddep)?

(lchilddep+1):

(rchilddep+1);

}

}

(1)该算法执行二叉树运算的什么功能?

(5分)

(2)若存在二叉树如图2所示,试问执行上述算法后,其执行结果是多少?

(5分)

图2.二叉树

2、已知线性表R数据类型如下:

#definemax100

Typedefstruct

{intkey

infotypeinfo;}Sqnode;

SqnodeR[max];

阅读下面算法,回答问题。

intfun2(sqnodeR[],intn,intk)

{inti=0;

R[n].key=k;

五、算法设计题(在下列算法的横线内填上适当的语句或表达式。

每空2分,共10分)

已知单链表的结点数据类型如下:

typedefstructLnode

{ElemTypedata;

StructLnode*next;

}LinkList;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1