2012山东省数据结构考试高级

合集下载

2012年10月--2007年1月自考2331数据结构历年试题和答案

2012年10月--2007年1月自考2331数据结构历年试题和答案

全国2012年10月高等教育一、单项选择题(本大题共l5小题,每小题2分,共30分)1.一个算法的时间耗费的数量级称为该算法的( D ) D.时间复杂度2.顺序表便于( D ) D.按序号查找结点3.设带头结点的单循环链表的头指针为head,指针变量P指向尾结点的条件是( B ) B.p->next==head4.设以数组A[0..m-1]存放循环队列,front指向队头元素,rear指向队尾元素的下一个位置,则当前队列中的元素个数为( A ) A.(rear-front+m)%m5.下列关于顺序栈的叙述中,正确的是( A )A.入栈操作需要判断栈满,出栈操作需要判断栈空6.A是一个10×10的对称矩阵,若采用行优先的下三角压缩存储,第一个元素a0,0的存储地址为1,每个元素占一个存储单元,则a7,5的地址为( D ) D.347.树的后序遍历等价于该树对应二叉树的( C ) C.中序遍历8.使用二叉线索树的目的是便于( D ) D.查找一个结点的前趋和后继9.设无向图的顶点个数为n,则该图边的数目最多为( B) B.n(n-1)/2 10.可进行拓扑排序的图只能是(C)C.有向无环图11.下列排序方法中稳定的是(A)A.直接插入排序12.下列序列不为..堆的是(C)C.75,65,30,l5,25,4513.对线性表进行二分查找时,要求线性表必须是(C)C.顺序存储且按关键字有序14.分别用以下序列生成二叉排序树,其中三个序列生成的二叉排序树是相同的,不同..的序列是(A)A.(4,1,2,3,5)15.下列关于m阶B树的叙述中,错误..的是(A)A.每个结点至多有m个关键字二、填空题(本大题共10小题,每小题2分,共20分)16.数据元素之间的逻辑关系称为数据的__逻辑____结构。

17.在线性表中,表的长度定义为__数据元素的个数____。

18.用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1、2、3、4,为了得到1、3、4、2的出栈顺序,相应的S和X的操作序列为__SXSSXSXX____。

《数据结构》期末考试题及答案

《数据结构》期末考试题及答案

2011-2012学年第一学期期末考查《数据结构》试卷(答案一律写在答题纸上,在本试卷上做答无效)一、选择(每题1分,共10分)1.长度为n的线性表采用顺序存储结构,一个在其第i个位置插入新元素的算法时间复杂度为(D)A.O(0)B.O(1)C.O(n)D.O(n2)2.六个元素按照6,5,4,3,2,1的顺序入栈,下列哪一个是合法的出栈序列?(D)A.543612B.453126C.346512D.2341563.设树的度为4,其中度为1、2、3、4的结点个数分别是4、2、1、2,则树中叶子个数为(B )A.8B.9C.10D.114.设森林F对应的二叉树B有m个结点,B的右子树结点个数为n,森林F中第一棵树的结点个数是( B )A. m-nB.m-n-1C.n+1D.m+n5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B)A.9B.11C.15D.不确定6.下列哪一个方法可以判断出一个有向图是否有环。

(A)A.深度优先遍历B.拓扑排序C.求最短路径D.求关键路径7.第7层有10个叶子结点的完全二叉树不可能有(B )个结点。

A.73B.234C.235D.2368.分别用以下序列构造二叉排序树,与用其他三个序列构造的结果不同的是(B)A.(100,80,90,60,120,110,130)B.(100, 120, 110,130,80, 60,90)C.(100,60,80,90,120,110,130)D.(100,80, 60,90, 120, 130,110)9.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序过程中变化如下:(1)84 47 25 15 21 (2)15 47 2584 21 (3)15 21 25 84 47(4)15 21 25 47 84则采用的排序方法是(B )A.选择排序B.起泡排序C.快速排序D.插入排序10.对线性表进行折半查找时,要求线性表必须(D)A.以顺序方式存储B.以顺序方式存储,且数据元素有序C.以链接方式存储D.以链接方式存储,且数据元素有序二、填空(每空1分,共15分)1.数据结构中评价算法的两个重要指标是时间复杂度、空间复杂度。

2012年山东省普通高等教育专升本

2012年山东省普通高等教育专升本

2012年山东省普通高等教育专升本招生学校招生专业和计划师范类:高职高专类:泰山学院50潍坊学院60 药学滨州医学院100 100 医学检验泰山医学院50 50 医学影像学泰山医学院50 50艺术设计滨州学院50300 菏泽学院50济宁学院50泰山学院50潍坊学院50枣庄学院50英语滨州学院80300 菏泽学院50济宁学院70山东师范大学历山学院50枣庄学院50园艺青岛农业大学海都学院40 40 针灸推拿学山东中医药大学50 50 中药学山东中医药大学50 50中医学山东中医药大学100 100 2012年山东省普通高等教育专升本各招生专业考试科目2012年山东省普通高等教育专升本各招生专业考试科目师范类:招生专业考试科目及范围高职高专类:麻醉学1. 计算机;2. 英语;3.综合一(生理学、人体解剖学、麻醉解剖学);4.综合二(外科学、临床麻醉学、重症监测)药学1. 计算机;2. 英语;3.综合一(药物化学、微生物学);4.综合二(有机化学、药物分析)医学检验1. 计算机;2. 英语;3.综合一(临床检验基础、生物化学检验);4.综合二(微生物学检验、免疫学检验)医学影像学1. 计算机;2. 英语;3.综合一(生理学、影像电子学基础);4.综合二(医学影像诊断学、医学影像设备学)针灸推拿学1. 计算机;2. 英语;3.综合一(中医基础理论、中药学);4.综合二(诊断学基础、针灸临床学)中药学1. 计算机;2. 英语;3.综合一(中医基础理论、中药鉴定学、药理学);4.综合二(中药炮制学、中药药剂学)中医学1. 计算机;2. 英语;3.综合一(中医基础理论、方剂学、中药学、);4.综合二(诊断学基础、中医内科学)动物医学1. 计算机;2. 英语;3.综合一(动物生理学、遗传学);4.综合二(内科学、外科学、传染病)2012年山东专升本考试主考学校和专业2012年山东省普通高等教育专升本考试主考学校和专业师范类主考学校主考专业山东师范大学学前教育、英语(师范类)、小学教育、音乐学、美术学、地理科学山东理工大学体育教育、汉语言文学、化学、历史学、教育技术学、思想政治教育、数学与应用数学高职高专类主考学校主考专业山东中医药大学中药学、中医学、针灸推拿学曲阜师范大学公共事业管理、市场营销山东交通学院(长清校区)交通运输、机械设计制造及其自动化山东财经大学(筹)(舜耕校金融学、工商管理区)聊城大学土木工程、旅游管理、工程管理青岛科技大学化学工程与工艺、电气工程及其自动化青岛农业大学园艺、生物科学、动物医学、朝鲜语、电子信息工程济南大学英语(高职高专类)、国际经济与贸易、服装设计与工程、电子商务德州学院会计学潍坊医学院口腔医学、护理学、药学潍坊学院日语、法学、计算机科学与技术、艺术设计泰山医学院临床医学、医学检验、医学影像学、麻醉学2012年山东省专升本计算机(公共课)考试要求2012年山东省普通高等教育专升本计算机(公共课)考试要求一、指导思想本考试大纲依据山东省教育厅《关于加强普通高校计算机基础教学的意见》(鲁教高字〔1995〕9号)中所要求的计算机教学的基本目标,根据当前山东省高校计算机文化基础课程教学的实际情况而制订。

02142数据结构导论份真题及答案.doc

02142数据结构导论份真题及答案.doc

2012年10月高等教育自学考试全国统一命题考试数据结构导论试题课程代码:02142请考生按规定用笔将所有试题的答案涂、写在答题纸上。

选择题部分注意事项:1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。

2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。

如需改动,用橡皮擦干净后,再选涂其他答案标号。

不能答在试题卷上。

一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的。

错选、多选或未选均无分。

1.下面几种算法时间复杂度阶数中,值最大的是A.O(nlog2n)B.O(n2)C.O(n)D.O(2n)2.即使输入非法数据,算法也能适当地做出反应或进行处理,不会产生预料不到的运行结果,这种算法好坏的评价因素称为A.正确性B.易读性C.健壮性D.时空性3.设顺序表的长度为100,则在第40个元素之后插入一个元素所需移动元素的个数为A.40B.60C.61D.1004.设带头结点的单循环链表的头指针为head,则判断该链表是否为空的条件是A. head->next==headB. head->next==NULLC. head!=NULLD. head==NULL5.在链栈的运算中,不需要...判断栈是否为空的是A.出栈B.进栈C.取栈顶元素D.求链栈的元素个数6.一个队列的输入序列是A,B,C,D,则该队列的输出序列是A.A,B,C,DB.B,C,D,AC.D,C,B,AD.C,D,B,A7.以行序为主序的二维数组a[3][5]中,第一个元素a[0][0]的存储地址是100,每个元素占2个存储单元,则a[1][2]的存储地址是A.100B.108C.114D.1168.对任何一棵二叉树T,若叶结点数为5个,则度为2的结点个数为A.4B.5C.6D.无法确定9.m个叶结点的哈夫曼树中,其结点总数为A.mB.2m+1C.2mD.2m-110.二叉树的中序遍历序列中,结点P排在结点Q之前的条件是A.在二叉树中P在Q的左边B.在二叉树中P在Q的右边C.在二叉树中P是Q的祖先D.在二叉树中P是Q的子孙11.有10个顶点的无向完全图的边数是A.11B.45C.55D.9012.在带权有向图中求两个结点之间的最短路径可以采用的算法是A.迪杰斯特拉(Dijkstra)算法B.克鲁斯卡尔(Kruskal)算法C.普里姆(Prim)算法D.深度优先搜索(DFS)算法13.二分查找(Binary Search)算法的时间复杂度是A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)14.在一棵初始时为空的二叉树中,依次插入键值序列50,72,43,85,75,20,38,45,65,60,构造对应的二叉排序树以后,查找元素60要进行的比较次数是A.2B.3C.4D.515.快速排序属于A.插入排序B.交换排序C.选择排序D.归并排序非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。

2012年山东省第二批计算机考试

2012年山东省第二批计算机考试

附.全国专业技术人员计算机应用能力考试科目(模块)类别(2010)济人考函【2012】8 号各县市区人力资源和社会保障局,市直各有关部门,中央、省属驻济有关单位:根据《关于2012年全国专业技术人员计算机应用能力考试有关问题的通知》(鲁人考函[2011]57号)精神,结合我市实际,为做好2012年专业技术人员计算机应用能力第二次考试工作,现将有关问题通知如下:一、考试范围及科目(模块)根据《转发人力资源社会保障部关于全国专业技术人员计算机应用能力考试科目更新有关问题的通知》(鲁人社办发〔2010〕30号)规定:(一)2012年参加全国专业技术人员计算机应用能力第二次考试的人员,须按照《全国专业技术人员计算机应用能力考试科目(模块)类别(2010)》(以下简称《类别表》)(附件1)所列类别要求进行报名考试。

(二)评聘中级专业技术职务者,须按《类别表》要求,在第1、2、3、5类科目(模块)中选取3个科目(模块)参加考试并取得合格证书。

(三)评聘高级专业技术职务者(包括正高级和副高级),须按《类别表》要求,在第1、2、3、5类科目(模块)中选取3个科目(模块)参加考试并取得合格证书,另外还应根据各自岗位和从事专业工作的特点,在第4、6、7、8、9、10、11、12、13、14类科目(模块)中选取1个科目(模块)参加考试并取得合格证书。

(四)根据《关于海外留学回国等部分专业技术人员申报专业技术资格免于外语和计算机应用能力考试的通知》(鲁人发【2006】7号)文件规定,符合下列条件之一的专业技术人员申报专业技术资格时,可免于计算机应用能力考试:1、取得经国务院教育行政部门认可的博士学位的海外留学回国人员,或在国内取得博士学位的人员。

2、国家有突出贡献的中青年专家、享受国务院政府特殊津贴人员、入选国家“百千万人才工程”国家级人选,受省(市、自治区)政府表彰的有突出贡献的中青年专家和享受省(市、自治区)政府特殊津贴人员。

青岛科技大学861数据结构2012年考研真题

青岛科技大学861数据结构2012年考研真题
A、nB、(n+1)/2பைடு நூலகம்、n/2D、(n-1)/2
5、在一个带头结点单链表HL中,若要向头结点后面,首元结点前面插入一个由指针p指向的结点,则执行。
A、HL = p;p->next = HL;
B、p->next = HL->next; HL->next = p;;
C、p->next = HL; p = HL;
青岛科技大学
二○一二年硕士研究生入学考试试题
考试科目:数据结构
注意事项:1.本试卷共四道大题(共计38个小题),满分150分;
2.本卷属试题卷,答题另有答题卷,答案一律写在答题卷上,写在该试题卷上或草纸上均无效。要注意试卷清洁,不要在试卷上涂划;
3.必须用蓝、黑钢笔或签字笔答题,其它均无效。
﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡
6、(6分)已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,…,nm个度为m的结点,问该树中有多少个叶子结点?并证明你的结论。
7、(6分)设待排序的记录共7个,排序码分别为8,3,2,5,9,1,6。
A、栈B、队列C、树D、图
9、若一棵二叉树具有10个度为2的结点,则该二叉树的度为0的结点个数是。
A、9B、11C、12D、不确定
10、高度为h的二叉树(仅含根结点的二叉树高度为零)的结点最少是多少。
A、2h+1B、h+1C、2h+1-1D、2h
11、由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为。
9、在一个具有n个顶点的无向完全图中,包含有_(20)__条边。
三、应用题(50分)
1、(4分)设计一数据结构,用来表示某一银行储户的基本信息: 账号、姓名、开户年月日、储蓄类型、存入累加数、利息、帐面总数。

2012年山东省数据结构试题集(10套题并附带答案)知识大全

2012年山东省数据结构试题集(10套题并附带答案)知识大全
A.整形 B.引用型
C.指针型 D.常值引用型?
28、下列关于哈夫曼树的叙述中,错误的是
A.用n个结点构造的哈夫曼树是唯一的
B.哈夫曼树中只有度为0或度为2的结点
C.树中两个权值最小的结点可能是兄弟结点
D.同一结点集构造的二叉树中,哈夫曼树的WPL最小
A.单链表 B.双链表 C.单循环链表 D. 顺序表
33、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用
D 存储方式最节省运算时间。
A.单链表 B.给出表头指针的单循环链表 C.双链表 D.带头结点的双循环链表
34、一棵左子树为空的二叉树在前序线索化后,其空指针域个数为
15、有向图采用邻接矩阵存储,某一行中非零元素的个数等于
A.对应顶点v的度
B.对应顶点v的出度
C.对应顶点v的入度
D.依附于对应顶点v的边数
16、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=ps p一>next=HL
29、在决定选取何种存储结构时,一般不考虑 A 。
A.各结点的值如何 B.结点个数的多少
C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。
30、如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 B 。
A.只有表头指针没有表尾指针的循环单链表
1、在二维数组a[9][10]中:每个数组元素占用3个存储空间,从首地址SA开始按行优先
连续存放,则元素a[8][5]的起始地址是
A.SA+141 B.SA+144 C.SA+222 D.SA+255

2012山东省数据结构(C++)理论考试试题及答案

2012山东省数据结构(C++)理论考试试题及答案

1、线索二叉树中某结点D,没有左孩子的条件是( B )。

A)D->Lchild=Null B) D->ltag=1C) D->Rchild=Null D) D->ltag=02、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。

A)13 B)33 C)18 D)403、下列各种数据结构中属于线性结构的有( A )。

A)栈 B) 二叉树C) 广义表 D) 图4、链式存储的存储结构所占存储空间( A )。

A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针B)只有一部分,存放结点值C)只有一部分,存储表示结点间关系的指针D)分两部分,一部分存放结点值,另一部分存放结点所占单元数5、设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列是( C )。

A) A, B, C, D, EB) B, C, D, E, AC) E, A, B, C, DD) E, D, C, B, A6、广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D )。

A) (G) B) (D) C) C D) D7、( C )在进行插入操作时,常产生假溢出现象。

A)顺序栈 B)循环队列C)顺序队列 D)链队列8、设给定问题的规模为变量n,解决该问题的算法所需时间为Tn=O(f(n)),Tn表示式中记号O表示( A )。

A)一个数量级别 B)一个平均值C)一个最大值 D)一个均方值9、在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为( C )。

A)4 B)5C)6 D)710、在一个链队列中,假定front和rear分别为队首和队尾指针,则插入一个结点的操作为( B )。

2012山东省分析数据库的考试题目高级

2012山东省分析数据库的考试题目高级

1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为O(m+n),因此不能采用常规的二层循环的查找。

可以先从右上角(i=a,j=d)元素与x比较,只有三种情况:一是A[i,j]>x,这情况下向j 小的方向继续查找;二是A[i,j]<x,下步应向i大的方向查找;三是A[i,j]=x,查找成功。

否则,若下标已超出范围,则查找失败。

void search(datatype A[ ][ ], int a,b,c,d, datatype x)//n*m矩阵A,行下标从a到b,列下标从c到d,本算法查找x是否在矩阵A中.{i=a; j=d; flag=0; //flag是成功查到x的标志while(i<=b && j>=c)if(A[i][j]==x) {flag=1;break;}else if (A[i][j]>x) j--; else i++;if(flag) printf(“A[%d][%d]=%d”,i,j,x); //假定x为整型.else printf(“矩阵A中无%d 元素”,x);}算法search结束。

[算法讨论]算法中查找x的路线从右上角开始,向下(当x>A[i,j])或向左(当x<A[i,j])。

向下最多是m,向左最多是n。

最佳情况是在右上角比较一次成功,最差是在左下角(A[b,c]),比较m+n次,故算法最差时间复杂度是O(m+n)。

2、#define maxsize 栈空间容量void InOutS(int s[maxsize])//s是元素为整数的栈,本算法进行入栈和退栈操作。

{int top=0; //top为栈顶指针,定义top=0时为栈空。

for(i=1; i<=n; i++) //n个整数序列作处理。

{scanf(“%d”,&x); //从键盘读入整数序列。

if(x!=-1) // 读入的整数不等于-1时入栈。

数据结构

数据结构

全国2012年1月自学考试数据结构试题一、单项选择题(本大题共15小题,每小题2分,共30分)1.每个结点有且仅有一个直接前趋和多个(或无)直接后继(第一个结点除外)的数据结构称()A.树状结构B.网状结构C.线性结构D.层次结构2.某线性表中最常用的操作是在最后一个元素之后插入元素和删除第一个元素,则最节省运算时间的存储结构是()A.单链表B.双链表C.仅有头指针的单循环链表D.仅有尾指针的单循环链表3.已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p l,p2,p3….,p n,若p1是n,则p i是()A.iB.n-IC.n-i+lD.不确定4.下面关于串的叙述中,正确的是()A.串是一种特殊的线性表B.串中元素只能是字母C.空串就是空白串D.串的长度必须大于零5.无向完全图G有n个结点,则它的边的总数为()A.n2B.n(n-1)C.n(n-1)/2D.(n-1)6.若一棵二叉树有10个度为2的结点,5个度为1的结点,则度为0的结点数是()A.9B.11C.15D.不确定7.如图所示,在下面的4个序列中,不符合...深度优先遍历的序列是()A.acfdebB.aebdfcC.aedfbcD.aefdbc8.无论待排序列是否有序,排序算法时间复杂度都是O(n2)的排序方法是( )A.快速排序B.归并排序C.冒泡排序D.直接选择排序9.已知二叉排序树G,要输出其结点的有序序列,则采用的遍历方法是()A.按层遍历B.前序遍历C.中序遍历D.后序遍历10.用ISAM和VSAM组织的文件都属于()A.散列文件B.索引顺序文件C.索引非顺序文件D.多关键字文件11.对序列(15,9,7,8,20,-1,4)进行排序,第一趟排序后的序列变为(4,9,-1,8,20,7,15),则采用的排序方法是()A.选择B.快速C.希尔D.冒泡12.当采用分块查找时,数据的组织方式为()A.数据分成若干块,每块内数据有序B.数据分成若干块,每块中数据个数必须相同C.数据分成若干块,每块内数据有序,块间是否有序均可D.数据分成若干块,每块内数据不必有序,但块间必须有序13.下述编码中不是前缀码的是()A.(00,01,10,11)B.(0,1,00,11)C.(0,10,110,111)D.(1,01,000,001)14.若一个栈以向量V[1..n]存储,初始栈顶指针top为n+l,则x进栈的正确操作是()A.top=top-1;V[top]=xB.V[top]=x;top=top+1C.top=top+1;V[top]=xD.V[top]=x;top=top-115.在一个以head为头结点指针的非空单循环链表中,指针p指向链尾结点的条件是()A.p - > data = - 1B.p - > next = NULLC.p - > next - > next=headD.p - > next = head二、填空题(本大题共10小题,每小题2分,若有两个空格,每个空格1分,共20分)16.在数据的逻辑结构和存储结构中,与计算机无关的是______。

2012山东省分析数据库的考试题目深入

2012山东省分析数据库的考试题目深入

1、请编写一个判别给定二叉树是否为二叉排序树的算法,设二叉树用llink-rlink法存储。

2、给出折半查找的递归算法,并给出算法时间复杂度性分析。

3、设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。

N2、NL、NR、N0都是全局量,且在调用count(t)之前都置为0.typedef struct node{int data; struct node *lchild,*rchild;}node;int N2,NL,NR,N0;void count(node *t){if (t->lchild!=NULL) if (1)___ N2++; else NL++;else if (2)___ NR++; else (3)__ ;if(t->lchild!=NULL)(4)____; if (t->rchild!=NULL) (5)____;}26.树的先序非递归算法。

void example(b)btree *b;{ btree *stack[20], *p;int top;if (b!=null){ top=1; stack[top]=b;while (top>0){ p=stack[top]; top--;printf(“%d”,p->data);if (p->rchild!=null){(1)___; (2)___;}if (p->lchild!=null)(3)___; (4)__;}}}}4、二叉树的层次遍历序列的第一个结点是二叉树的根。

实际上,层次遍历序列中的每个结点都是“局部根”。

确定根后,到二叉树的中序序列中,查到该结点,该结点将二叉树分为“左根右”三部分。

若左、右子树均有,则层次序列根结点的后面应是左右子树的根;若中序序列中只有左子树或只有右子树,则在层次序列的根结点后也只有左子树的根或右子树的根。

数据结构习题课(2012)

数据结构习题课(2012)

数据结构习题课(2012)复习重点1.数据结构的概念,逻辑结构、物理结构的概念及各⾃包含的内容2.算法的特性、设计要求,如何度量算法的时间效率。

3.线性表的顺序/链式存储结构的特点,插⼊、删除算法。

4.栈和队列的逻辑特性,顺序栈的⼊栈/出栈、循环队列的⼊队/出队算法。

5.以三元组顺序表存放的稀疏矩阵的转置算法。

6.⼆叉树的性质及其四种遍历算法。

7.森林与⼆叉树的相互转换。

8.WPL、前缀编码的概念,哈夫曼树的构造算法。

9.图的相关概念,邻接矩阵及邻接表的存储结构。

10.图的深度优先/⼴度优先遍历算法。

11.最⼩⽣成树的两种算法。

12.拓扑排序的意义和算法。

13.最短路径算法。

14.顺序表、有序表的查找算法。

15.⼆叉排序树的性质、插⼊/删除算法、平衡⼆叉树的性质、插⼊算法。

16.哈希表的相关概念,常⽤的冲突处理⽅法。

17.直接插⼊排序、希尔排序、快速排序、堆排序、归并排序的算法。

注意:1.上述每个知识点可能会以任何题型出现,复习的时候别把它们当做“简答题”来复习。

2.红⾊(下划线)标识的知识点或算法,只要求对给出的初始数据,能画出结果则可。

其他的算法则可能会出现在“算法题”中。

⾃测题第1章绪论⼀、判断1.顺序存储⽅式只能⽤于存储线性结构。

(错)2.顺序查找法适⽤于存储结构为顺序或链式存储的线性表。

(对)⼆、选择1.计算机算法必须具备输⼊、输出、( B )等5个特性。

A.可⾏性、可移植性和可扩展性B.可⾏性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、安全性和稳定性2.算法在发⽣⾮法操作时可以作出处理的特性称为(C )。

A.正确性B.易读性C.健壮性D.可靠性3.数据结构是⼀门研究⾮数值计算的程序设计问题中计算机的(A )以及它们之间的( B )和运算的学科。

A.操作对象B.计算⽅法C.逻辑存储D.数据映像A.结构B.关系C.运算D.算法4.在数据结构中,逻辑上数据结构可分为:(B )A.动态结构和静态结构B.线性结构和⾮线性结构C.紧凑结构和⾮紧凑结构D.内部结构和外部结构5.数据结构主要研究数据的(D )A.逻辑结构B.存储结构C.逻辑结构和存储结构D.逻辑结构和存储结构及其运算的实现6.为了描述n个⼈之间的同学关系,可⽤(C )结构表⽰A.线性表B.树C.图D.队列7.下⾯的程序段违反了算法的(A )原则void sam(){ int n=2;while (!odd(n)) n+=2;printf(n);}A.有穷性B.确定性C.可⾏性D.健壮性三、问答1.什么是逻辑结构和物理结构?各⾃包含哪⼏种?2.线性结构和树型结构的特点分别是什么?3.简述顺序存储结构与链式存储结构在表⽰数据元素之间关系上的只要区别。

数据结构中期考试试卷

数据结构中期考试试卷

《数据结构》期中考试试卷(供2012级计算机专业用)一、单项选择题,在括号内填写所选择的标号(每小题1分,共20分)1、算法指的是()A.计算机程序B.解决问题的计算方法C.排序算法D.解决问题的有限运算序列2、如下陈述中正确的是()A.串是一种元素仅为字符的线性表 B.串的长度必须大于零C.串中元素只能是字母D.空串就是空白串3、在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。

A. O(1)B. O(n2)C. O(n)D. O(n/2)4、当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。

A. n-2B. n-1C. nD. n+15.用链表表示线性表的优点是()。

(A)便于随机存取(B)花费的存储空间较顺序存储少(C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同6.在少用一个元素空间的循环队列QU ( m0为最大队列长度(以元素为单位),front和rear 分别为队列的队头指针和队尾指针) 中,当队列非空时,若插入一个新的数据元素,则其队尾指针rear的变化是( )。

A.QU->rear==(QU->front+1) % m0B.QU->rear==(QU->rear+1) % m0C.QU->rear==(QU->front+1) D.QU->rear==(QU->rear+1)7.设有S1=“ABCDEFG”,S2=“PQRST”,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(S1,2,len(S2)),subs(S1,len(S2),2))的结果是( )。

A.BCDEF B. BCDEFG C. BCPQRST D. BCDEFEF8、在一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较()个元素结点。

2012年计算机统考数据结构真题

2012年计算机统考数据结构真题
表 1
当前字符 a + b a * ( ( c + d ) / e f
栈内容 +
Байду номын сангаас
后缀表达式 a ab
说明
-* -*( -*(( -*(( -*((+ -*((+ -*( -*(/ -*(/ -*(-*(-
ab+ ab+a ab+a ab+a ab+a ab+ac ab+ac ab+acd ab+acd+ ab+acd+ ab+acd+e ab+acd+e/ ab+acd+e/f
D.O(n2)
B。本算法是一个递归,设执行时间为 T(n),则有: T(n)=1 当 n=1 时 T(n)=T(n-1)+1 当 n>1 时 所以 T(n)=T(n-1)+1=T(n-2)+2=T(n-3)+3=„=T(1)+n-1=n=O(n)。 2. 已知操作符包括 “+” , “-” , “*” , “/” 和 “(” 、 “)” 。 将中缀表达式 a+b-a*((c+d)/e-f)+g 转换为等价的后缀表达式 ab+acd+e/f-*-g+时, 用栈来存放暂时还不能确定运算次序的操 作符, 若栈初始时为空, 则转换过程中同时保存在栈中的操作符的最大个数是 ( ) 。 A.5 B.7 C.8 D.11 A。产生后缀表达式的过程如表 1 所示,从中看到栈中最多有 5 个运算符。
图 2
⌉ D。3 阶 B-树中每个非叶子节点至少包含⌈ 个关键字。该 3 阶 B-树删除关键 字 78(如图 3 所示),得到一棵新 B-树(如图 4 所示)。

2012年1月数据结构导论试题与答案

2012年1月数据结构导论试题与答案

全国2012年1月高等教育自学考试数据结构导论试题课程代码:02142一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.结点按逻辑关系依次排列形成一条“锁链”的数据结构是( )A.集合B.线性结构C.树形结构D.图状结构2.下面算法程序段的时间复杂度为( )for ( int i=0; i<m; i++)for ( int j=0; j<n; j++)a[i][j]=i*j;A. O(m2)B. O(n2)C. O(mn)D. O(m+n)3.线性结构是( )A.具有n(n≥0)个表元素的有穷序列B.具有n(n≥0)个字符的有穷序列C.具有n(n≥0)个结点的有穷序列D.具有n(n≥0)个数据项的有穷序列4.单链表中删除由某个指针变量指向的结点的直接后继,该算法的时间复杂度是( )A. O(1)C. O(log2n)D. O(n)5.关于串的叙述,正确的是( )A.串是含有一个或多个字符的有穷序列B.空串是只含有空格字符的串C.空串是含有零个字符或含有空格字符的串D.串是含有零个或多个字符的有穷序列6.栈的输入序列依次为1,2,3,4,则不可能的出栈序列是( )A.1243B. 1432C. 2134D.43127.队列是( )A. 先进先出的线性表B. 先进后出的线性表C. 后进先出的线性表D.随意进出的线性表8.10阶上三角矩阵压缩存储时需存储的元素个数为( )A.11B.56C.100D.1019.深度为k(k≥1)的二叉树,结点数最多有( )A.2k个B.(2k -1)个C.2k-1个D.(2k+1)个10.具有12个结点的二叉树的二叉链表存储结构中,空链域NULL的个数为( )A. 11B.13C. 23D. 2511.具有n个顶点的无向图的边数最多为( )A.n+1B.n(n+1)C.n(n-1)/2D.2n(n+1)12.三个顶点v1,v2,v3的图的邻接矩阵为010001010⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦,该图中顶点v3的入度为( )A. 0B. 1C. 2D. 313.顺序存储的表格中有60000个元素,已按关键字值升序排列,假定对每个元素进行查找的概率是相同的,且每个元素的关键字值不相同。

考研 数据结构试题(含答案)

考研 数据结构试题(含答案)

我以一名大学生的人格尊严保证,在本场考试中,自觉遵守考试纪律,服从考试管理,决不作弊或帮助别人作弊!签名:学院专业学号级班··················密···················封·····················线··················命题人签字:系主任签字:审核院长签字:共印份数:第1页共6页聊城大学计算机学院2012—2013学年第1学期期末考试2011级《数据结构》试题(闭卷B卷)一、单项选择题(共15题,每题2分,共30分)1.研究数据结构就是研究(D )。

A.数据的逻辑结构B.数据的存储结构C.数据的逻辑结构和存储结构D.数据的逻辑结构、存储结构及其基本操作2.在数据结构中,从逻辑上可以把数据结构分为(C )。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构3.算法分析的两个主要方面是(A )。

A.空间复杂度和时间复杂度B.正确性和简单性C.可读性和文档性D.数据复杂性和程序复杂性4.下面程序段的时间复杂度是( C )。

2012年山东科技大学数据结构与操作系统--真题及参考答案

2012年山东科技大学数据结构与操作系统--真题及参考答案
5、Spooling系统由几部分组成?它有哪些特征?(P190)
答:Spooling系统由输入井和输出井、输入缓冲区和输出缓冲区、输入进程和输出进程共3部分组成。
Spooling系统的特点有:(P191)
(1)提高了I/O速度。I/O操作时针对输入井和输出井,避免了操作低速I/O设备的速度不匹配。
(2)将独占设备改造为共享设备。Spooling系统没有为任何进程实际分配设备,只是在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表。
(3)实现了虚拟设备功能。宏观上有多个进程在同时使用一台独占设备,但对于每一个进程而言,他们认为自己独占了一个设备。
五、算法和计算题(每小题10分,共30分)
1.使用P、V操作描述读者-写者问题。要求允许几个阅读者可以同时读该数据集,而一个写着不能与其他进程(不管是写者还是读者)同时访问该数据集。(P63)
克鲁斯卡尔算法,求最小生成树:(P173)
4、请写出应填入下列叙述中()内的正确答案。排序有各种方法,如插入排序、快速排序、堆排序、冒泡排序等。设一数组中原有数据如下:15,13,20,18,12,60。下面是一组由不同排序方法进行一遍排序后的结果。(15分)(必须对算法的具体步骤有详细的了解,认真看看书吧P263)
必要条件:
(1)互斥条件 (2)请求和保持条件
(3)不剥夺条件 (4)环路等待条件
基本方法:
(1)预防死锁(2)避免死锁(3)检测死锁(4)解除死锁
4、何谓虚拟存储器?它有哪些特征?(P143)
虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储器系统。具体的说,是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
答:(1)电梯调度算法是从移动臂当前位置开始,沿臂的移动方向取选择离当前移动

2012数据结构题资料

2012数据结构题资料

●__(4)__的特点是数据结构中元素的存储地址与其关键字之间存在某种映射关系。

(4)A.树形存储结构B.链式存储结构C.索引存储结构D.散列存储结构●若循环队列以数组 Q[O..m-1] 作为其存储结构变量 rear 表示循环队列中队尾元素的实际位置,其移动按 rear=(rear+1) mod m 进行,变量 length 表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是__(5)__。

(5)A.rear-length B.(rear-length+m) mod mC.(1+rear+m-length) mod m D.m-length●一个含有n个顶点和e条边的简单无向图,在其邻接矩阵存储结构中共有__(6)__个零元素。

(6)A.e B.2e C.n2-e D.n2-2e●若一棵哈夫曼(Huffman)树共有9个顶点,则其叶子结点的个数为__(7)__。

(7)A.4 B.5 C.6 D.7●若采用邻接矩阵来存储简单有向图,则其某一个顶点i的入度等于该矩阵__(8)__。

(8)A.第i行中值为1的元素个数 B.所有值为1的元素总数C.第i行及第i列中值为1的元素总个数D.第i列中值为1的元素个数●在—棵度为3的树中,若有2个度为3的结点,有1个度为2的结点,则有__(9)__个度为0的结点。

(9)A.4 B.5 C.6 D.7●设结点x和y是二叉树中任意的两个结点,在该二叉树的先根遍历序列中x在y之前,而在其后根遍历序列中x在y之后,则x和y的关系是__(10)__。

(10)A.x是y的左兄弟B.x是y的右兄弟C.x是y的祖先D.x是y的后裔●设顺序存储的某线性表共有123个元素,按分块查找的要求等分为3块。

若对索引表采用顺序查找方法来确定子块,且在确定的子块中也采用顺序查找方法,则在等概率的情况下,分块查找成功的平均查找长度为__(11)__。

(11)A.21 B.23 C.41 D.62DCDBDCCB(顺序查找平均查找长度是:(n+1)/2 (1+3)/2+(41+1)/2=23 123/3=41)●在一棵完全二叉树中,其根的序号为1,_(33)_可判定序号为p和q的两个结点是否在同一层。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、两棵空二叉树或仅有根结点的二叉树相似;对非空二叉树,可判左右子树是否相似,采用递归算法。

int Similar(BiTree p,q) //判断二叉树p和q是否相似{if(p==null && q==null) return (1);else if(!p && q || p && !q) return (0);else return(Similar(p->lchild,q->lchild) && Similar(p->rchild,q->rchild)) }//结束Similar2、假设以邻接矩阵作为图的存储结构,编写算法判别在给定的有向图中是否存在一个简单有向回路,若存在,则以顶点序列的方式输出该回路(找到一条即可)。

(注:图中不存在顶点到自己的弧)有向图判断回路要比无向图复杂。

利用深度优先遍历,将顶点分成三类:未访问;已访问但其邻接点未访问完;已访问且其邻接点已访问完。

下面用0,1,2表示这三种状态。

前面已提到,若dfs(v)结束前出现顶点u到v的回边,则图中必有包含顶点v和u的回路。

对应程序中v的状态为1,而u是正访问的顶点,若我们找出u的下一邻接点的状态为1,就可以输出回路了。

void Print(int v,int start ) //输出从顶点start开始的回路。

{for(i=1;i<=n;i++)if(g[v][i]!=0 && visited[i]==1 ) //若存在边(v,i),且顶点i的状态为1。

{printf(“%d”,v);if(i==start) printf(“\n”); else Print(i,start);break;}//if}//Printvoid dfs(int v){visited[v]=1;for(j=1;j<=n;j++ )if (g[v][j]!=0) //存在边(v,j)if (visited[j]!=1) {if (!visited[j]) dfs(j); }//ifelse {cycle=1; Print(j,j);}visited[v]=2;}//dfsvoid find_cycle() //判断是否有回路,有则输出邻接矩阵。

visited数组为全局变量。

{for (i=1;i<=n;i++) visited[i]=0;for (i=1;i<=n;i++ ) if (!visited[i]) dfs(i);}//find_cycle3、设计一个尽可能的高效算法输出单链表的倒数第K个元素。

4、假设K1,…,Kn是n个关键词,试解答:试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K1,K2,…,Kn 时,用算法建立一棵以LLINK / RLINK 链接表示的二叉查找树。

5、根据二叉排序树中序遍历所得结点值为增序的性质,在遍历中将当前遍历结点与其前驱结点值比较,即可得出结论,为此设全局指针变量pre(初值为null)和全局变量flag,初值为true。

若非二叉排序树,则置flag为false。

#define true 1#define false 0typedef struct node{datatype data; struct node *llink,*rlink;} *BTree;void JudgeBST(BTree t,int flag)// 判断二叉树是否是二叉排序树,本算法结束后,在调用程序中由flag得出结论。

{ if(t!=null && flag){ Judgebst(t->llink,flag);// 中序遍历左子树if(pre==null)pre=t;// 中序遍历的第一个结点不必判断else if(pre->data<t->data)pre=t;//前驱指针指向当前结点else{flag=flase;} //不是完全二叉树Judgebst (t->rlink,flag);// 中序遍历右子树}//JudgeBST算法结束6、我们可用“破圈法”求解带权连通无向图的一棵最小代价生成树。

所谓“破圈法”就是“任取一圈,去掉圈上权最大的边”,反复执行这一步骤,直到没有圈为止。

请给出用“破圈法”求解给定的带权连通无向图的一棵最小代价生成树的详细算法,并用程序实现你所给出的算法。

注:圈就是回路。

7、本题要求建立有序的循环链表。

从头到尾扫描数组A,取出A[i](0<=i<n),然后到链表中去查找值为A[i]的结点,若查找失败,则插入。

LinkedList creat(ElemType A[],int n)//由含n个数据的数组A生成循环链表,要求链表有序并且无值重复结点{LinkedList h;h=(LinkedList)malloc(sizeof(LNode));//申请结点h->next=h; //形成空循环链表for(i=0;i<n;i++){pre=h;p=h->next;while(p!=h && p->data<A[i]){pre=p; p=p->next;} //查找A[i]的插入位置if(p==h || p->data!=A[i]) //重复数据不再输入{s=(LinkedList)malloc(sizeof(LNode));s->data=A[i]; pre->next=s; s->next=p;//将结点s链入链表中}}//forreturn(h);}算法结束8、(1)p->rchild (2)p->lchild (3)p->lchild (4)ADDQ(Q,p->lchild) (5)ADDQ(Q,p->rchild)25. (1)t->rchild!=null (2)t->rchild!=null (3)N0++ (4)count(t->lchild) (5)count(t->rchild)26. .(1)top++ (2) stack[top]=p->rchild (3)top++ (4)stack[top]=p->lchild27. (1)*ppos // 根结点(2)rpos=ipos (3)rpos–ipos (4)ipos (5)ppos+19、二叉树的层次遍历序列的第一个结点是二叉树的根。

实际上,层次遍历序列中的每个结点都是“局部根”。

确定根后,到二叉树的中序序列中,查到该结点,该结点将二叉树分为“左根右”三部分。

若左、右子树均有,则层次序列根结点的后面应是左右子树的根;若中序序列中只有左子树或只有右子树,则在层次序列的根结点后也只有左子树的根或右子树的根。

这样,定义一个全局变量指针R,指向层次序列待处理元素。

算法中先处理根结点,将根结点和左右子女的信息入队列。

然后,在队列不空的条件下,循环处理二叉树的结点。

队列中元素的数据结构定义如下:typedef struct{ int lvl; //层次序列指针,总是指向当前“根结点”在层次序列中的位置int l,h; //中序序列的下上界int f; //层次序列中当前“根结点”的双亲结点的指针int lr; // 1—双亲的左子树 2—双亲的右子树}qnode;BiTree Creat(datatype in[],level[],int n)//由二叉树的层次序列level[n]和中序序列in[n]生成二叉树。

n是二叉树的结点数{if (n<1) {printf(“参数错误\n”); exit(0);}qnode s,Q[]; //Q是元素为qnode类型的队列,容量足够大init(Q); int R=0; //R是层次序列指针,指向当前待处理的结点BiTree p=(BiTree)malloc(sizeof(BiNode)); //生成根结点p->data=level[0]; p->lchild=null; p->rchild=null; //填写该结点数据for (i=0; i<n; i++) //在中序序列中查找根结点,然后,左右子女信息入队列if (in[i]==level[0]) break;if (i==0) //根结点无左子树,遍历序列的1—n-1是右子树{p->lchild=null;s.lvl=++R; s.l=i+1; s.h=n-1; s.f=p; s.lr=2; enqueue(Q,s);}else if (i==n-1) //根结点无右子树,遍历序列的1—n-1是左子树{p->rchild=null;s.lvl=++R; s.l=1; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);}else //根结点有左子树和右子树{s.lvl=++R; s.l=0; s.h=i-1; s.f=p; s.lr=1;enqueue(Q,s);//左子树有关信息入队列s.lvl=++R; s.l=i+1;s.h=n-1;s.f=p; s.lr=2;enqueue(Q,s);//右子树有关信息入队列}while (!empty(Q)) //当队列不空,进行循环,构造二叉树的左右子树{ s=delqueue(Q); father=s.f;for (i=s.l; i<=s.h; i++)if (in[i]==level[s.lvl]) break;p=(bitreptr)malloc(sizeof(binode)); //申请结点空间p->data=level[s.lvl]; p->lchild=null; p->rchild=null; //填写该结点数据if (s.lr==1) father->lchild=p;else father->rchild=p; //让双亲的子女指针指向该结点if (i==s.l){p->lchild=null; //处理无左子女s.lvl=++R; s.l=i+1; s.f=p; s.lr=2; enqueue(Q,s);}else if (i==s.h){p->rchild=null; //处理无右子女s.lvl=++R; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);}else{s.lvl=++R; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);//左子树有关信息入队列s.lvl=++R; s.l=i+1; s.f=p; s.lr=2; enqueue(Q,s); //右子树有关信息入队列}}//结束while (!empty(Q))return(p);}//算法结束10、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历序列。

相关文档
最新文档