济南大学846数据结构历年考研真题汇编1216.docx

上传人:b****4 文档编号:4036827 上传时间:2022-11-27 格式:DOCX 页数:23 大小:60.28KB
下载 相关 举报
济南大学846数据结构历年考研真题汇编1216.docx_第1页
第1页 / 共23页
济南大学846数据结构历年考研真题汇编1216.docx_第2页
第2页 / 共23页
济南大学846数据结构历年考研真题汇编1216.docx_第3页
第3页 / 共23页
济南大学846数据结构历年考研真题汇编1216.docx_第4页
第4页 / 共23页
济南大学846数据结构历年考研真题汇编1216.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

济南大学846数据结构历年考研真题汇编1216.docx

《济南大学846数据结构历年考研真题汇编1216.docx》由会员分享,可在线阅读,更多相关《济南大学846数据结构历年考研真题汇编1216.docx(23页珍藏版)》请在冰豆网上搜索。

济南大学846数据结构历年考研真题汇编1216.docx

济南大学846数据结构历年考研真题汇编1216

济南大学2016年攻读硕士学位研究生入学考试试题

考试科目:

数据结构科目代码:

846考试时间:

月日

(注:

特别提醒所有答案一律写在答题纸上,直接写在试题或草稿纸上的无效!

———————————————————————————————

一、选择题

1.设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度

之和为(D)。

A、20B、30C、40D、45

2.执行一趟快速排序能够得到的序列是(A)。

A、[41,12,34,45,27]55[72,63]

B、[45,34,12,41]55[72,63,27]

C、[63,12,34,45,27]55[41,72]

D、[12,27,45,41]55[34,63,72]

3.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是(A)。

A、head==0B、head->next==0

C、head->next==headD、head!

=0

4.时间复杂度不受数据初始状态影响而恒为O(nlog2n)的是(A)。

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

5.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(D)。

A、空或只有一个结点B、高度等于其结点数

C、任一结点无左孩子D、任一结点无右孩子

6.一趟排序结束后不一定能够选出一个元素放在其最终位置上的是(D)。

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

7.设某棵三叉树中有40个结点,则该三叉树的最小高度为(B)。

A、3B、4C、5D、6

8.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为(A)。

A、O(n)B、O(n2)C、O(n1/2)D、O(1og2n)

9.二路归并排序的时间复杂度为(C)。

A、O(n)B、O(n2)C、O(nlog2n)D、O(1og2n)

10.深度为k的完全二叉树中最少有(B)个结点。

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

11.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为(C)。

A、front->next=s;front=s;B、s->next=rear;rear=s;

C、rear->next=s;rear=s;D、s->next=front;front=s;

12.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为(A)。

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

13.设某哈夫曼树中有199个结点,则该哈夫曼树中有(B)个叶子结点。

A、99B、100C、101D、102

14.设二叉排序树上有n个结点,则在二叉排序树上查找结点的平均时间复杂度为(D)。

A、O(n)B、O(n2)C、O(nlog2n)D、O(1og2n)

15.设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为(B)。

A、第i行非0元素的个数之和B、第i列非0元素的个数之和

C、第i行0元素的个数之和D、第i列0元素的个数之和

二、判断题

1.调用一次深度优先遍历可以访问到图中的所有顶点。

(错)

2.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。

(对)

3.冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。

(对)

4.满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。

(对)

5.设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。

(错)

6.层次遍历初始堆可以得到一个有序的序列。

(错)

7.设一棵树T可以转化成二叉树BT,则二叉树BT中一定没有右子树。

(对)

8.线性表的顺序存储结构比链式存储结构更好。

(错)

9.中序遍历二叉排序树可以得到一个有序的序列。

(对)

10.快速排序是排序算法中平均性能最好的一种排序。

(对)

三、填空题

1.for(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的时间复杂度为(O(n))。

2.设指针变量p指向单链表中结点A,指针变量s指向被插入的新结点X,则进行插入操作的语句序列为(s->next=p->next;p->next=s)(设结点的指针域为next)。

3.设有向图G的二元组形式表示为G=(D,R),D={1,2,3,4,5},R={r},r={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},则给出该图的一种拓扑排序序列((1,3,2,4,5))。

4.设无向图G中有n个顶点,则该无向图中每个顶点的度数最多是(n-1)。

5.设二叉树中度数为0的结点数为50,度数为1的结点数为30,则该二叉树中总共有(129)个结点数。

6.设F和R分别表示顺序循环队列的头指针和尾指针,则判断该循环队列为空的条件为(F==R)。

7.设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条件是(p->lchild==0&&p->rchild==0)。

8.简单选择排序和直接插入排序算法的平均时间复杂度为(O(n2))。

9.快速排序算法的空间复杂度平均情况下为(O(nlog2n)),最坏的情况下为(O(n))。

10.散列表中解决冲突的两种方法是(开放定址法)和(链地址法)。

四、算法设计题

1.设计在顺序有序表中实现二分查找的算法。

参考答案:

structrecord{intkey;intothers;};

intbisearch(structrecordr[],intk)

{

intlow=0,mid,high=n-1;

while(low<=high)

{

mid=(low+high)/2;

if(r[mid].key==k)return(mid+1);elseif(r[mid].key>k)high=mid-1;elselow=mid+1;

}

return(0);

}

2.设计判断二叉树是否为二叉排序树的算法。

参考答案:

intminnum=-32768,flag=1;

typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;

voidinorder(bitree*bt)

{

if(bt!

=0){inorder(bt->lchild);if(minnum>bt->key)flag=0;minnum=bt->key;inorder(bt->rchild);}

}

3.在链式存储结构上设计直接插入排序算法

参考答案:

voidstraightinsertsort(lklist*&head)

{

lklist*s,*p,*q;intt;

if(head==0||head->next==0)return;

elsefor(q=head,p=head->next;p!

=0;p=q->next)

{

for(s=head;s!

=q->next;s=s->next)if(s->data>p->data)break;

if(s==q->next)q=p;

else{q->next=p->next;p->next=s->next;s->next=p;t=p->data;p->data=s->data;s->data=t;}

}

}

 

济南大学2015年攻读硕士学位研究生入学考试试题

考试科目:

数据结构科目代码:

846考试时间:

月日

(注:

特别提醒所有答案一律写在答题纸上,直接写在试题或草稿纸上的无效!

———————————————————————————————

一、选择题

1.设某无向图有n个顶点,则该无向图的邻接表中有(B)个表头结点。

A、2nB、nC、n/2D、n(n-1)

2.设无向图G中有n个顶点,则该无向图的最小生成树上有(B)条边。

A、nB、n-1C、2nD、2n-1

3.设一组初始记录关键字序列为(60,80,55,40,42,85),则以第一个关键字45为基准而得到的一趟快速排序结果是(C)。

A、40,42,60,55,80,85B、42,45,55,60,85,80

C、42,40,55,60,80,85D、42,40,60,85,55,80

4.(B)二叉排序树可以得到一个从小到大的有序序列。

A、先序遍历B、中序遍历C、后序遍历D、层次遍历

5.设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为(B)。

A、2i+1B、2iC、i/2D、2i-1

6.程序段s=i=0;do{i=i+1;s=s+i;}while(i<=n);的时间复杂度为(A)。

A、O(n)B、O(nlog2n)C、O(n2)D、O(n3/2)

7.设带有头结点的单向循环链表的头指针变量为head,则其判空条件是(C)。

A、head==0B、head->next==0

C、head->next==headD、head!

=0

8.设某棵二叉树的高度为10,则该二叉树上叶子结点最多有(C)。

A、20B、256C、512D、1024

9.设一组初始记录关键字序列为(13,18,24,35,47,50,62,83,90,115,134),则利用二分法查找关键字90需要比较的关键字个数为(B)。

A、1B、2C、3D、4

10.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为(D)。

A、top=top+1;B、top=top-1;

C、top->next=top;D、top=top->next;

二、判断题

1.不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”情况。

(对)

2.当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。

(对)

3.设某堆中有n个结点,则在该堆中插入一个新结点的时间复杂度为O(log2n)。

(对)

4.完全二叉树中的叶子结点只可能在最后两层中出现。

(对)

5.哈夫曼树中没有度数为1的结点。

(对)

6.对连通图进行深度优先遍历可以访问到该图中的所有顶点。

(对)

7.先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。

(对)

8.由树转化成二叉树,该二叉树的右子树不一定为空。

(错)

9.线性表中的所有元素都有一个前驱元素和后继元素。

(错)

10.带权无向图的最小生成树是唯一的。

(错)

三、填空题

1.设指针变量p指向双向链表中的结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为(s->left=p)=p;s->right=p->right;(p->right)=s;p->right->left=s;(设结点中的两个指针域分别为left和right)。

2.设完全有向图中有n个顶点,则该完全有向图中共有(n(n-1))条有向条;设完全无向图中有n个顶点,则该完全无向图中共有(n(n-1)/2)条无向边。

3.设关键字序列为(Kl,K2,…,Kn),则用筛选法建初始堆必须从第(n/2)个元素开始进行筛选。

4.解决散列表冲突的两种方法是(开放定址法)和(链地址法)。

5.设一棵三叉树中有50个度数为0的结点,21个度数为2的结点,则该二叉树中度数为3的结点数有(14)个。

6.高度为h的完全二叉树中最少有(2h-1)个结点,最多有(2h-1)个结点。

7.设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟直接插入排序结束后的结果的是(12,24,35,27,18,26)。

8.设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟简单选择排序结束后的结果的是(12,18,24,27,35,26)。

9.设一棵二叉树的前序序列为ABC,则有(5)种不同的二叉树可以得到这种序列。

10.下面程序段的功能是实现一趟快速排序,请在下划线处填上正确的语句。

structrecord{intkey;datatypeothers;};

voidquickpass(structrecordr[],ints,intt,int&i)

{

intj=t;structrecordx=r[s];i=s;

while(i

{

while(ix.key)j=j-1;if(i

while((i

}

(r[i]=x);

}

四、算法设计题

1.设计在链式结构上实现简单选择排序算法。

参考答案:

voidsimpleselectsorlklist(lklist*&head)

{

lklist*p,*q,*s;intmin,t;

if(head==0||head->next==0)return;

for(q=head;q!

=0;q=q->next)

{

min=q->data;s=q;

for(p=q->next;p!

=0;p=p->next)if(min>p->data){min=p->data;s=p;}

if(s!

=q){t=s->data;s->data=q->data;q->data=t;}

}

}

2.设计在顺序存储结构上实现求子串算法。

参考答案:

voidsubstring(chars[],longstart,longcount,chart[])

{

longi,j,length=strlen(s);

if(start<1||start>length)printf("Thecopypositioniswrong");

elseif(start+count-1>length)printf("Toocharacterstobecopied");

else{for(i=start-1,j=0;i

}

3.设计求结点在二叉排序树中层次的算法。

参考答案:

intlev=0;

typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;

voidlevel(bitree*bt,intx)

{

if(bt!

=0)

{lev++;if(bt->key==x)return;elseif(bt->key>x)level(bt->lchild,x);elselevel(bt->rchild,x);}

}

 

济南大学2014年攻读硕士学位研究生入学考试试题

考试科目:

数据结构科目代码:

846考试时间:

月日

(注:

特别提醒所有答案一律写在答题纸上,直接写在试题或草稿纸上的无效!

———————————————————————————————

一、选择题

1.字符串的长度是指(C)。

A、串中不同字符的个数B、串中不同字母的个数

C、串中所含字符的个数D、串中不同数字的个数

2.建立一个长度为n的有序单链表的时间复杂度为(C)

A、O(n)B、O

(1)C、O(n2)D、O(log2n)

3.两个字符串相等的充要条件是(C)。

A、两个字符串的长度相等B、两个字符串中对应位置上的字符相等

C、同时具备(A)和(B)两个条件D、以上答案都不对

4.设某散列表的长度为100,散列函数H(k)=k%P,则P通常情况下最好选择(B)。

A、99B、97C、91D、93

5.在二叉排序树中插入一个关键字值的平均时间复杂度为(B)。

A、O(n)B、O(1og2n)C、O(nlog2n)D、O(n2)

6.设一个顺序有序表A[1:

14]中有14个元素,则采用二分法查找元素A[4]的过程中比较元素的顺序为(C)。

A、A[1],A[2],A[3],A[4]B、A[1],A[14],A[7],A[4]

C、A[7],A[3],A[5],A[4]D、A[7],A[5],A[3],A[4]

7.设一棵完全二叉树中有65个结点,则该完全二叉树的深度为(B)。

A、8B、7C、6D、5

8.设一棵三叉树中有2个度数为1的结点,2个度数为2的结点,2个度数为3的结点,则该三叉链权中有(C)个度数为0的结点。

A、5B、6C、7D、8

9.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为(A)。

A、aedfcbB、acfebdC、aebcfdD、aedfbc

10.队列是一种(A)的线性表。

A、先进先出B、先进后出C、只能插入D、只能删除

二、判断题

1.如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。

(对)

2.设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。

(错)

3.分块查找的基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存在的块号,然后再在相应的块内进行顺序查找。

(对)

4.二维数组和多维数组均不是特殊的线性结构。

(错)

5.向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。

(错)

6.如果某个有向图的邻接表中第i条单链表为空,则第i个顶点的出度为零。

(对)

7.非空的双向循环链表中任何结点的前驱指针均不为空。

(对)

8.不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。

(对)

9.图的深度优先遍历算法中需要设置一个标志数组,以便区分图中的每个顶点是否被访问过。

(对)

10.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。

(对)

三、填空题

1.设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则以d=4为增量的一趟希尔排序结束后的结果为(49,13,27,50,76,38,65,97)。

2.下面程序段的功能是实现在二叉排序树中插入一个新结点,请在下划线处填上正确的内容。

typedefstructnode{intdata;structnode*lchild;structnode*rchild;}bitree;

voidbstinsert(bitree*&t,intk)

{

if(t==0){(t=(bitree*)malloc(sizeof(bitree)));

t->data=k;t->lchild=t->rchild=0;}

elseif(t->data>k)bstinsert(t->lchild,k);else(bstinsert(t->rchild,k));

}

3.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X需要执行的语句序列:

s->next=p->next;(p->next=s);。

4.设指针变量head指向双向链表中的头结点,指针变量p指向双向链表中的第一个结点,则指针变量p和指针变量head之间的关系是p=(head->rlink)和head=(p->llink)(设结点中的两个指针域分别为llink和rlink)。

5.设某棵二叉树的中序遍历序列为ABCD,后序遍历序列为BADC,则其前序遍历序列为(CABD)。

6.完全二叉树中第5层上最少有

(1)个结点,最多有(16)个结点。

7.设有向图中不存在有向边,则其对应的邻接矩阵A中的数组元素A[i][j]的值等于(0)。

8.设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则第4趟直接选择排序结束后的结果为(13,27,38,50,76,49,65,97)。

9.设连通图G中有n个顶点e条边,则对应的最小生成树上有(n-1)条边。

10.设有一组初始记录关键字序列为(50,16,23,68,94,70,73),则将它们调整成初始堆只需把16与(50)相互交换即可。

四、算法设计题

1.设计一个在链式存储结构上统计二叉树中结点个数的算法。

参考答案:

voidcountnode(bitree*bt,int&count)

{

if(bt!

=0)

{count++;countnode(bt->lchild,count);countnode(bt->rchild,count);}

}

2.设计一个算法将无向图的邻接矩阵转为对应邻接表的算法。

参考答案:

typedefstruct{intvertex[m];intedge[m][m];}gadjmatrix;

typedefstructnode1{intinfo;intadjvertex;structnode1*nextarc;}glinklistnode;

typedefstructnode2{intvertexinfo;glinklistnode*firstarc;}glinkheadnode;

voidadjmatrixtoadjlist(gadjmatrixg1[],glinkheadnodeg2[])

{

inti,j;glinklistnode*p;

for(i=0;i<=n-1;i++)g2[i].firstarc=0;

for(i=0;i<=n-1;i++)for(j=0;j<=n-1;j++)

if(g1.edge[i][j]==1)

{

p=(glinklistnode*)malloc(sizeof(glinklistnode));p->adjvertex=j;

p->nextarc=g[i].firstarc;g[i].firstarc=p;

p=(glinklistnode*)malloc(sizeof(glinklistnode));p->adjvertex=i;

p->nextarc=g[j].firstarc;g[j].firstarc=p;

}

}

 

济南大学2013年攻

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

当前位置:首页 > 农林牧渔 > 林学

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

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