数据结构试题四套.docx

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

数据结构试题四套.docx

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

数据结构试题四套.docx

数据结构试题四套

A卷、

选择(共20分每题只有一个正确答案每题2分)

 1.数据结构是( D  )

  A.一种数据类型

  B.数据的存储结构

  C.一组性质相同的数据元素的集合

  D.相互之间存在一种或多种特定关系的数据元素的集合

 2.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( B  )

  A.3,2,6,1,4,5    B.3,4,2,1,6,5

  C.1,2,5,3,4,6    D.5,6,4,2,3,1

 3.求单链表中当前结点的后继和前驱的时间复杂度分别是( C  )

  A.O(n)和O

(1)B.O

(1)和O

(1)

  C.O

(1)和O(n)D.O(n)和O(n)

 4.已知指针p和q分别指向某单链表中第一个结点和最后一个结点。

假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为(A)

  A.q->next=s->next;s->next=p;B.s->next=p;q->next=s->next;

  C.p->next=s->next;s->next=q;D.s->next=q;p->next=s->next;

 5.已知函数Sub(s,i,j)的功能是返回串s中从第i个字符起长度为j的子串,函数Scopy(s,t)的功能为复制串t到s。

若字符串S=″SCIENCESTUDY″,则调用函数Scopy(S,Sub(S,1,7))后得到(C)

  A.P=″SCIENCE″B.P=″STUDY″

  C.S=″SCIENCE″D.S=″STUDY″

 6.对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为(A)

  A.(N+1)/2B.N/2C.ND.[(1+N)*N]/2

 7.下列陈述中正确的是(D)

  A.二叉树是度为2的有序树

  B.二叉树中结点只有一个孩子时无左右之分

  C.二叉树中必有度为2的结点

  D.二叉树中最多只有两棵子树,并且有左右之分

 8.设有一个10阶的对称矩阵A,采用下三角压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为(B)。

  A.13   B.33   C.18  D.40

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

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

 10.下列关键字序列中,构成小根堆的是(D) 

  A.{84,46,62,41,28,58,15,37}

  B.{84,62,58,46,41,37,28,15}

  C.{15,28,46,37,84,41,58,62} 

  D.{15,28,46,37,84,58,62,41}

二、填空题(共20分每空2分)

 1.链式存储结构的特点是借助(指针)来表示数据元素之间的逻辑关系。

 2.假设带头结点的非空单循环链表中仅设尾指针L,则在第1个数据元素结点之前插入指针s所指结点的语句依次是(s->next=L->next->next;),(L->next->next=s;)。

 3.无表头结点的链队列Q为空的条件是(Q.front=Q.rear=Null)。

 4.不含任何字符的串称为(空串)。

 5.表达式“a*b+c/d*f-g”的后缀表达式为(ab*cd/f*+g-)。

 6.如果排序过程(具有相同关键字的待排记录的相对位置没有发生改变)称该排序方法是稳定的

 7.由权值分别为4,6,2,3的叶子生成一个哈夫曼树,它的带权路径长度为(29)

 8.从空树起,依次插入关键字73,1l,35,48,52,27,66构造所得的二叉排序树,在等概率查找的假设下,查找成功时的平均查找长度为(25/7)。

 9.判断线索二叉树中某结点指针P所指结点有左孩子的条件是(P->Ltag==0)。

三、应用题(共50分)

 1.简述顺序表和链表存储方式的特点。

(6分) 

 2.

(1)已知一个二叉树如图1所示:

写出该二叉树的先序,中序,后序遍历序列(3分)

  

(2)把图1对应的二叉树转换为所对应的森林。

(3分)

  (3)已知一棵二叉树的中序遍历序列为:

dfebagc,先序遍历序列为:

abdefcg,请画出这棵二叉树(4分)

图1

 3.对一组关键字:

26,85,37,20,62,13,29,15,18采用快速排序方法进行排序,用第一个关键字作枢轴,请写出每趟排序结果。

(只写每趟结果)(8分)

 4.依次输入序列(62,68,30,61,25,14,53,47,90,84)中元素,生成一棵二插排序树 

  

(1)画出生成后的二叉排序树(3分)

  

(2)画出删除结点30后的二叉排序树。

(4分)

 5.画出右图所示二叉树的中序线索链表的存储表示(带头结点)(7分)。

 6.利用广义表的head和tail操作,可从广义表L=((a,b),(c,d))中分解得到原子c,其操作表达式为head(head(tail(L)));

分别写出从下列广义表中分解得到b的操作表达式。

  

(1)L1=(a.,b,c,d);

  

(2)L2=(((a),(b),(c),(d)))。

(6分)

 7.求出下图的一棵最小生成树试画出构造过程(表明你使用的算法以及起始顶点)(6分)

四、算法设计(任选一题,共10分)

 1.假设以带头结点的单链表表示非递减有序表,设计一算法删除表中所有值大于min且小于max(假设min

 2.编写算法统计二叉树的叶子结点个数.

A卷答案

一、选择(共20分每题只有一个正确答案每题2分)

  1-5.D B C A C    6-10.A D B D D

二、填空题(共20分每空2分)

  1.指针

  2.s->next=L->next->next;L->next->next=s.

  3.Q.front=Q.rear=Null

  4.空串

  5.ab*cd/f*+g-

  6.具有相同关键字的待排记录的相对位置没有发生改变

  7.29

  8.25/7

  9.P->Ltag==0

三、应用题(共50分)

  1.(共6分)答:

顺序存储:

用地址连续的地址表示逻辑上的相邻关系。

可以实现随机存取,但进行插入删除操作时需要移动大量元素。

适合于查询操作比较多时。

(3分)

链式存储:

用随机的不连续的存储地址存储线性表,通过指针来表示逻辑上的相邻关系。

不能随机存储,要找到链表里面某一元素时必须从头指针开始,依次访问链表。

插入删除操作时只需修改指针,不用移动元素。

适合插入、删除操作比较多时。

(3分)

评分细则:

两者定义2分,优点2分,缺点2分。

  2.(共10分)

  

(1)先:

abdgfhce   中:

dfghbace   后:

fhgdbeca

    评分细则:

一个遍历序列1分

  

(2) 

   

    评分细则:

一个图1分

  (3)

    

    评分细则:

4分

  3.(共8分)

   第一趟:

18 15 13 20 26 62 29 37 85 (4分)

   第二趟:

13 15 18 20 26 37 29 62 85 (2分)

   第三趟:

13 15 18 20 26 29 37 62 85 (2分)

   评分细则:

第一趟(4分),第二趟、第三趟各2分。

  4.(共7分)

   

      

(1)        

(2)    或者    

(2)

   评分细则:

(1)3分

(2)4分

  5.(共7分)

  

   评分细则:

整体框架2分,标志域2分,线索3分

  6.(共6分)

   

(1)head (tail(L1))

   

(2)head(head(tail(head(L2))))

   评分细则:

(1)3分 

(2)3分

  7.(共6分)

  答案一:

  

  答案二:

  

  答案三:

   

   评分细则:

1、2、3,4步2分;5、6步2分;7步2分

四、算法设计(任选一题,共10分)

  1.(共10分)

   StatusDelete_Between(LinkList&L,intmax,intmin)

   {p=L; (2分)

    While(p->next->data<=min)p=p->next;  (3分)

    if(p->next)

    {q=p->next;

     While(q->datanext;free(k);}  (3分)

      p->next=q;

    }  (2分)

   }

  2.(共10分)

   intLeafCount_Bitree(BiTreeT)

   { if(!

T)return0;  (3分)

     elseif(!

T->lch&&!

T->rch)return1; (3分)

     else

     returnLeafCount_Bitree(T->lch)+LeafCount_Bitree(T->rch);  (4分)

    }

B卷

一、选择(共20分每题只有一个正确答案每题2分)

 1.一个算法应该是( B )。

  A.程序              B.问题求解步骤的描述

  C.要满足五个基本特性        D.A和C.

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

  s=0;

  for(i=1;i

  for(j=1;j

  s+=i*j;

  A.O

(1)     B.O(logn)     C.O(n)     D.O(n2)

 3.已知指针p和q分别指向某单链表中第一个结点和最后一个结点。

假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为( A )。

  A.q->next=s->next;s->next=p;           B.s->next=p;q->next=s->next;

  C.p->next=s->next;s->next=q;           D.s->next=q;p->next=s->next;

 4.已知循环队列的存储空间为数组data[21],且当前队列的头指针和尾指针的值分别为8和3,则该队列的当前长度为( C )。

  A.5      B.6        C.16      D.17

 5.通常将链串的结点大小设置为大于1是为了( B )。

  A.提高串匹配效率                   B.提高存储密度

  C.便于插入操作                    D.便于删除操作

 6.表头和表尾均为空表的广义表是( B )。

  A.()                         B.(())

  C.((()))                       D.((),())

 7.设栈的输入序列是1,2,3,4则( D )不可能是其出栈序列。

  A.1,2,4,3,                   B.2,1,3,4,

  C.1,4,3,2,                   D.4,3,1,2,

 8.用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为( C )。

  A.n-1      B.n

  C.n+l      D.2n

 9.为便于判别有向图中是否存在回路,可借助于( D )。

  A.广度优先搜索算法                  B.最小生成树算法

  C.最短路径算法                    D.拓扑排序算法

 10.下列四个序列中,哪一个是堆(C )。

  A.75,65,30,15,25,45,20,10   B.75,65,45,10,30,25,20,15

  C.75,45,65,30,15,25,20,10   D.75,45,65,10,25,30,20,15

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

 1.线性表L=(a1,a2,…,an)含有n个元素,用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是          (n-1)/2。

 2. 操作受限后进先出的线性表            是栈。

 3.在目标串S[0..n-1]=″xwxxyxy″中T=”xy”,则Index(S,T,0)的执行结果是     3    。

 4.由权值分别为4,6,2,8的叶子生成一个哈夫曼树,它的带权路径长度为     38     。

 5.三元组表适合存储    稀疏   矩阵.

 6.从空树起,依次插入关键字73,81,35,48,52,27,66和构造所得的二叉排序树,在等概率查找的假设下,查找成功时的平均查找长度为     20/7     。

 7.在折半查找中,要求被查找的元素必须采用    顺序   存储结构。

 8.产生冲突现象的两个关键字称为该散列函数的     同义词     。

 9.若采用孩子兄弟链表作为树的存储结构,则树的后根遍历应对应采用二叉树的   中根  遍历。

 10.对一个栈S,栈底指针用base表示,栈顶指针用top表示,数组的长度为L,则栈满的条件为 (s.top-s.base)>=L    。

三、应用题(共50分)

 1.简述顺序表和链表存储方式的特点。

(5分)

 2.

(1)已知一个二叉树如图1所示:

写出该二叉树的先序,中序,后序遍历序列(3分)

  

(2)把图1对应的二叉树转换为所对应的森林。

(3分)

  (3)已知一棵二叉树的中序遍历序列为:

dfebagc,先序遍历序列为:

abdefcg,请画出这棵二叉树(4分)

   

 3.画出图2所示二叉树的中序线索链表的存储表示(带头结点)(5分)。

   

 4.已知带权图的邻接表如下所示,其中边表结点的结构为:

(8分)

   

  依此邻接表从顶点C出发进行深度优先遍历。

 

(1)写出依次从顶点C出发进行的深度优先遍历序列。

 

(2)写出依次从顶点C出发进行的广度优先遍历序列。

 5.对一组关键字:

26,85,37,10,62,18,29,15采用快速排序方法进行排序,用第一个关键字作枢轴,请写出每趟排序结果。

(只写每趟结果)(7分)

 6.利用广义表的head和tail操作,可从广义表L=((a,b),(c,d))中分解得到原子c,其操作表达式为

head(head(tail(L)));

分别写出从下列广义表中分解得到b的操作表达式。

(1)L1=((a.,b),c,d);

(2)L2=((a),(b),(c),d)。

(7分)

7.已知一个无向图如下图所示,要求分别用Prim(普里姆)(假设以①为起点)和Kruskal(克鲁斯卡尔)算法生成最小树,试画出构造过程。

(8分)

四、算法设计(10分)

 1.假设以带头结点的单链表表示非递减有序表,单链表的类型定义如下:

      typedefstructnode{

      DataTypedata;

      structnode*next;

      }LinkNode,*LinkList;

 设计一算法使得插入一个数值为x的结点后,单链表仍有序。

(5分)

 2.设从键盘输入一整数的序列:

a1,a2,a3,…,an,试编写算法实现:

用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。

算法应对异常情况(入栈满等)给出相应的信息。

(注意:

算法中直接利用栈的基本操作,如push(),pop(),stackempty(),stacklength等来实现)。

(5分)

B卷答案

一、选择(每题2分,共20分)

  1-5..B D A C B  6-10.B D C D C

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

  1.(n-1)/2

  2.操作受限后进先出的线性表

  3.3

  4.38

  5.稀疏

  6.20/7

  7.顺序

  8.同义词

  9.中根

  10.(s.top-s.base)>=L

三、应用题(共50分)

  1.(5分)答:

  顺序存储:

用地址连续的地址表示逻辑上的相邻关系。

可以实现随机存取,但进行插入删除操作时需要移动大量元素。

适合于查询操作比较多时。

  链式存储:

用随机的不连续的存储地址存储线性表,通过指针来表示逻辑上的相邻关系。

不能随机存储,要找到链表里面某一元素时必须从头指针开始,依次访问链表。

插入删除操作时只需修改指针,不用移动元素。

适合插入、删除操作比较多时。

  评分细则:

两者定义2分,优点2分,缺点2分。

  2.答:

   

(1)先:

abdghcef   中:

dhgbaefc   后:

hgdbfeca(3分)

   

(2)                       (3分)

    

    (3)(4分)

    

    3.(5分)答:

     

  4.(8分)答:

   

(1) CDBAFE

   

(2) CDABFE

  评分细则:

(1)4分;

(2)4分。

  5.(7分)答:

   

(1) 1518102662372985

   

(2) 1015182629376285

   (3) 1015182629376285

  评分细则:

(1)2分;

(2)2分;(3)3分。

  6.(7分)答:

   

(1)head(tail(head(L1)))

   

(2)head(head(head(tail(L2))))

  评分细则:

(1)3分;

(2)4分。

  7.(8分)答:

    

      

(1)     

(2)     (3)         (4)          (5)

    

      

(1)        

(2)       (3)        (4)      (5)

    评分细则:

Prim(普里姆)和Kruskal(克鲁斯卡尔)最小树各4分。

四、算法设计(每题5分,共10分)

  1.(5分)

  voidInsertLlist(LinkList&L,ElemTypex)

   {LinkListP,S,q;

    P=L->next;q=L;

    for(;P&&P->datanext);

    S=(LinkList)malloc(sizeof(LinkNode));

    S->data=x;

    S->next=NULL;

    S->next=P;

    q->next=S;

  }

  2.(5分)

  void Function(StackS,inta[n])

  { inti,e,length;

    for(i=0;i

   {if(a[i]==-1)

   {if((S.top-S.base)>=StackLength(S))

    { S.base=(ElemTyp*)realloc(S.base,(S.stacksize+StackIncrement)*sizeof(ElemType));

     S.top=S.base+S.stacksize;

     S.stacksize=S.stacksize+StackIncrement;}

     Push(S,s[i]);

   else

    if(!

StackEmpty){Pop(S,e);Printf(e);}

  } 

}

C卷

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

 1.下列关于存储结构的叙述中,正确的是____C_____。

  A.顺序存储方式只能用于存储线性结构。

  B.线性表的逻辑顺序与存储顺序总是一致的。

  C.散列法存储的基本思想是由关键字的值决定数据的存储地址。

  D.静态链表具有动态链表的优点,它存取表中第i个元素的时间与i无关。

 2.在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移    C    个元素。

 

  A.n-i       B.n-i-1        C.n-i+1       D.i

 3.设n个元素的进栈序列是a1,a2,a3,…,an,出栈序列是1,2,3,…,n,若a3=1,则a1的值是    C   。

  A.可能是2        B.一定是2       C.不可能是2       D.不可能是3 

 4.设栈s和队列Q的初始状态为空, 元素b1 ,b2, ,b3 ,b4 ,b5和b6 依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是b2  ,b4 ,b3  ,b6 ,b5 ,b1 ,,则栈S的容量至少应该是     A     。

  A.3      B.4      C.5       D.其它   

 5.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为   A   。

  A. 53      B. 48      C. 72      D. 24 

 6.如将一棵有n个结点的完全二叉树按顺序存放方式,存放在下标编号为0, 1,…, n-1的一维数组中,设某结点下标为k(k>0),则其双亲结点的下标是    A    。

  A.(k-1)/2     B.(k+1)/2      C.k/2     D.k-1

 7.在一棵高度小于3的二叉树中,若结点的前序序列为ABCDEF,则结点的中序序列有可能为    B    。

  A.DCEBAF   B.CBDAFE   C.BCDAFE     D.FCADBE

 8.在下面几组关键字中,哪个是最小堆____B___。

  A.{05,13,55,94,17,46,42}          B.{05,42,13,55,94,17,46}

  C.{05,42,17,94,55,13,46}          D.{94,42,55,01,17,13,46}

 9.有数据{53,30,37,12,45,24,96},从空二叉树开始逐个插入数据来形成二叉搜索树,若希望高度最小,则应选择下面哪个序列输入    B      。

  A.45,24,53,

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

当前位置:首页 > 高中教育 > 理化生

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

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