搜档网
当前位置:搜档网 › 数据结构2010

数据结构2010

数据结构2010
数据结构2010

2010年招收攻读硕士学位研究生入学考试试题(副题)

********************************************************************************************

学科、专业名称:计算机技术、软件工程

研究方向:各专业

考试科目名称:830数据结构

考生注意:所有答案必须写在答题纸(卷)上,写在本试题上一律不给分。

一.选择题(每题2分,共40分)

1.具有n个顶点的完全有向图的边数为( ).

A n(n-1)/2

B n(n-1)

C n2

D n2-1

2.队列操作的原则是()

A.先进先出

B.后进先出

C.只能进行插入

D.只能进行删除

3. 顺序栈S的Pop(S, e)操作弹出元素e,则下列( )是正确的操作。

A. e=*(s.top)

B. e=*(s.top--)

C. e=*(--s.top)

D. e=--s.top

4. 对具有n个结点的有序表折半查找时,其时间复杂度是 ( ) 。

A. O(log2n)

B. O(nlog2n)

C. O(n)

D. O(n2)

5. 若线性表最常用的操作是存取第i个元素及其前趋的值,则采用( )存储方式节省时间。

A.单链表

B.双链表

C.单循环链表

D.顺序表

6. 线性表的链接实现有利于( )运算

A.插入

B. 读表元素 C .查找 D.定位

7. 设连通图G的顶点数为n,则G的生成树的边数为( )

A. n

B. n-1

C.2n

D. 2n-1

8.从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动()个元素。

A.n-i

B.n-i+1

C.n-i-1

D. i

9. 若有一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是()

A.n-i

B.n-i-1

C.n-i+1

D.不确定

10. 二叉树第i(i≥1)层上至多有( )个结点。

A. 2i

B.2i

C.2i-1

D.2i-1

11.串是一种特殊的线性表, 其特殊性体现在( )

A.可以顺序存储

B.数据元素是一个字符

C.可以链接存储

D.数据元素可以是多个

12. 稀疏矩阵一般的压缩存储方法有两种,即: ( )

A.二维数组和三维数组

B.三元组和散列

C.三元组和十字链表

D.散列和十字链表

考试科目:数据结构共 4 页,第 1 页

13. 在AOE网中,完成工程的最短时间是()。

A.从源点到汇点的最长路径的长度B.从源点到汇点的最短路径的长度

C.最长的回路的长度D.最短的回路的长度

14. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。

A. 存储结构

B. 逻辑结构

C. 链式存储结构

D. 顺序存储结构

15. 在线索化二叉树中,T所指结点没有左子树的充要条件是()。

A. T->left=NULL

B. T->ltag=1

C. t->ltag=1且t->left=Null

D. 以上都不对

16.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的度数之和为()。

A.s B.s-1 C.s+1 D.2s

17. 快速排序在( )情况下最不利于发挥其长处。.

A. 被排序的数据量太大.

B. 被排序数据中含有多个相同的关键字

C. 被排序的数据完全无序

D. 被排序的数据已基本有序

18. 判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以用()。

A.求关键路径的方法B.求最短路径的Dijkstra方法

C.广度优先遍历算法D.深度优先遍历算法

19.通过一趟排序就能从整个记录序列中选择出具有最大(或最小)关键字的记录,这种排序方法是( ) 。

A. 堆排序

B. 快速排序

C. 直接插入排序

D.归并排序

20. 设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针的操作为( ) 。

A. p->next=p->next->next

B. p=p->next

C. p=p->next->next

D. p->next=p

二.填空题(每空2分,共30分)

1. 在堆排序,希尔排序,快速排序,归并排序算法中,占用辅助空间最多的是。

2. 在散列表(hash)查找中,评判一个散列函数优劣的两个主要条件是:

和。

3.堆栈是一种操作受限的线性表,它只能在线性表的进行插入和删除操作,对栈的访问是按照的原则进行的。

4.顺序查找方法适合于存储结构;在等概率查找的条件下,对于表长是n的顺序表,其平均查找长度是。

5. 循环链表的主要优点是。

6. 一个算法的效率可为效率和效率。

7.对于一个具有n个记录的序列,若采用冒泡排序,记录之间最少的比较次数是,最多的比较次数是。

8.由n个权值构成的哈夫曼树共有个结点。

9. 对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小至少为× 。三.判断题(每题1分,共15分,正确的选t,错误的选f)

考试科目:数据结构共 4 页,第 2 页

考试科目:数据结构共 4 页,第 3 页

4.试问执行以下串函数会产生怎样的输出结果?(6分)

void compute( ) {

StrAssign(s, ’This is a book’);

Replace(s, SubString(s,3,7), ’ese are’);

StrAssign(t, Concat(s, ’s’));

StrAssign(u, ’mnmnmnmnmnmn’);

StrAssign(v, SubString(u,6,3));

StrAssign(w, ’c’);

printf(‘t=’, t, ’ v=’, v, ’ u=’, Replace(u, v, w));

}

5.假设用于通信的电文仅由6个字母组成,字母在电文中出现的频率分别为:37,18,22,3,20,10,画出一棵哈夫曼树,试为这6个字母设计哈夫曼编码。(8分)

6. 输入一个正整数序列{42,38,16,50,100,5,45,3,82,96,35},建立一棵二叉排序树,然后删除结点50。分别画出该二叉排序树及删除结点50后的二叉排序树。(8分)

五.算法设计题(30分)

1.算法填空(每空2分,共10分)

下面算法在顺序表L中删除第i个元素,并保留在e中。

Status ListDelete_Sq(SqList &L,int i, ElemType &e)

{ if ((i<1)||(i>L.length_Sq(L)) return ERROR;

p= ;

e=*p;

q=L.elem+ ;

for (++p;p<=q; )

*(p-1)= ;

L.length= ;

return OK;

}

2.设计算法: 输入n个元素的值,创建带头结点的单链线性表L。(8分)

3.假设在n个城市之间的公路网中,已知直达城市之间的乘车费用,各城市之间均存在通路,从V0城市开始乘车,经过若干个城市到S城市,有多条路线可以选择,设计算法:选择一条最节省费用的路线。

要求:(1)选择一种合适的数据结构,描述n个城市之间的公路网;(4分)(2)用伪代码描述求从V0城市到S城市最节省费用的路线。(8分)

考试科目:数据结构共 4 页,第 4 页

数据结构实验答案1

重庆文理学院软件工程学院实验报告册 专业:_____软件工程__ _ 班级:_____软件工程2班__ _ 学号:_____201258014054 ___ 姓名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________ 2013年 06 月 25 日

实验序号 1 实验名称实验一线性表基本操作实验地点S-C1303 实验日期2013年04月22日 实验内容1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。 2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 3.编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成 (an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄) 实验过程及步骤1. #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList; #include "common.h" #include "seqlist.h" void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i; l=(SeqList*)malloc(sizeof(SeqList)); printf("请输入线性表的长度:"); scanf("%d",&r); l->last = r-1; printf("请输入线性表的各元素值:\n"); for(i=0; i<=l->last; i++) { scanf("%d",&l->elem[i]); } px(l,i); printf("请输入要插入的值:\n");

数据结构课程设计题目2010

一、数据结构课程设计要求 1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。 2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。 3.课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上2小时的上机来调试C 或C++语言设计的程序,总共至少要上机调试程序20小时。属教师安排上机时间学生不得缺席。 二、数据结构课程设计题目 1. 运动会分数统计(限1 人完成) 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2. 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

数据结构实验

数据结构实验指导书

实验一线性表的顺序存储结构 一、实验学时 4学时 二、背景知识:顺序表的插入、删除及应用。 三、目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 四、实验内容 1.从键盘随机输入一组整型元素序列,建立顺序表。(注意:不可将元素个数和元素值写死在程序中) 2.实现该顺序表的遍历(也即依次打印出每个数据元素的值)。 3.在该顺序表中顺序查找某一元素,如果查找成功返回1,否则返回0。 4.实现把该表中某个数据元素删除。 5.实现在该表中插入某个数据元素。 6.实现两个线性表的归并(仿照课本上P26 算法2.7)。 7. 编写一个主函数,调试上述6个算法。 五、实现提示 1.存储定义 #include #include #define MAXSIZE 100 //表中元素的最大个数

typedef int ElemType;//元素类型 typedef struct list{ ElemType *elem;//静态线性表 int length; //表的实际长度 int listsize; //表的存储容量 }SqList;//顺序表的类型名 2.建立顺序表时可利用随机函数自动产生数据。 3.为每个算法功能建立相应的函数分别调试,最后在主函数中调用它们。 六、注意问题 插入、删除元素时对于元素合法位置的判断。 七、测试过程 1.先从键盘输入元素个数,假设为6。 2.从键盘依次输入6个元素的值(注意:最好给出输入每个元素的提示,否则除了你自己知道之外,别人只见光标在闪却不知道要干什么),假设是:10,3,8,39,48,2。 3.遍历该顺序表。 4.输入待查元素的值例如39(而不是待查元素的位置)进行查找,因为它在表中所以返回1。假如要查找15,因为它不存在,所以返回0。 5.输入待删元素的位置将其从表中删掉。此处需要注意判断删位置是否合法,若表中有n个元素,则合法的删除位

数据结构实验报告七查找、

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓名: 王辉 学号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。 熟悉各种查找算法的思想。 2、掌握查找的实现过程。 3、学会在不同情况下运用不同结构和算法求解问题。 4 把每个学生的信息放在结构体中: typedef struct //记录 { NA name; NA tel; NA add; }Record; 5 void getin(Record* a)函数依次输入学生信息 6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。并采用二次探测再散列法解决冲突。 7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1抽象数据类型的功能规格说明和结构体: #include

《数据结构》实验报告

苏州科技学院 数据结构(C语言版) 实验报告 专业班级测绘1011 学号10201151 姓名XX 实习地点C1 机房 指导教师史守正

目录 封面 (1) 目录 (2) 实验一线性表 (3) 一、程序设计的基本思想,原理和算法描述 (3) 二、源程序及注释(打包上传) (3) 三、运行输出结果 (4) 四、调试和运行程序过程中产生的问题及采取的措施 (6) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (6) 实验二栈和队列 (7) 一、程序设计的基本思想,原理和算法描述 (8) 二、源程序及注释(打包上传) (8) 三、运行输出结果 (8) 四、调试和运行程序过程中产生的问题及采取的措施 (10) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (10) 实验三树和二叉树 (11) 一、程序设计的基本思想,原理和算法描述 (11) 二、源程序及注释(打包上传) (12) 三、运行输出结果 (12) 四、调试和运行程序过程中产生的问题及采取的措施 (12) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (12) 实验四图 (13) 一、程序设计的基本思想,原理和算法描述 (13) 二、源程序及注释(打包上传) (14) 三、运行输出结果 (14) 四、调试和运行程序过程中产生的问题及采取的措施 (15) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (16) 实验五查找 (17) 一、程序设计的基本思想,原理和算法描述 (17)

二、源程序及注释(打包上传) (18) 三、运行输出结果 (18) 四、调试和运行程序过程中产生的问题及采取的措施 (19) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (19) 实验六排序 (20) 一、程序设计的基本思想,原理和算法描述 (20) 二、源程序及注释(打包上传) (21) 三、运行输出结果 (21) 四、调试和运行程序过程中产生的问题及采取的措施 (24) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (24) 实验一线性表 一、程序设计的基本思想,原理和算法描述: 程序的主要分为自定义函数、主函数。自定义函数有 InitList_Sq、Out_List、ListInsert_Sq、ListDelete_Sq、LocateElem_Sq 、compare。主函数在运行中调用上述的自定义函数,每个自定义函数实现程序的每部分的小功能。 1.程序设计基本思想 用c语言编译程序,利用顺序存储方式实现下列功能:根据键盘输入数据建立一个线性表,并输出该线性表;然后根据屏幕菜单的选择,可以进行数据的插入、删除、查找,并在插入或删除数据后,再输出线性表;最后在屏幕菜单中选择结束按钮,即可结束程序的运行。 2.原理 线性表通过顺序表现,链式表示,一元多项式表示,其中链式表示又分为静态链表,双向链表,循环链表等,在不同的情况下各不相同,他可以是一个数字,也可以是一个符号,通过符号或数字来实现程序的运行。 3.算法描述

2010-2011(2)数据结构B卷及答案.

安徽大学2010—2011学年第2学期 《 数据结构 》考试试卷(B 卷) (闭卷 时间120分钟) 考场登记表序号 一、填空题(每小题1.5分,共15分) 1.含有36个元素的有序表,进行二分查找时的判定树的深度为 6 。 2.在一个无向图中,所有顶点的度数之和等于所有边数的 2 倍。 3. 由带权为9、2、5、7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为 44 。 4.由a ,b ,c 三个结点构成的二叉树,共有 5 种不同形态。 5.二维数组A[0‥5][5‥10]以行序为主序存储,每个元素占4个存储单元,且A[0][5]的存储地址是1000,则A[3][9]的地址是 1088 。 6.若串s=''soft ,则其子串个数是 11 。 7. 设循环队列的空间大小为M ,入队时修改队尾指针rear 的语句为 rear=(rear+1)%M 。 8.在顺序存储结构的线性表中,插入或删除一个数据元素大约需移动表中 一半 元素。 9.下列程序段的时间复杂度是 O(m*n) 。 for (i=0;i

数据结构_实验六_报告

实验报告 实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOV网、AOE网在邻接表上的实现以及解决简单的应用问题。 二、实验内容 一>.基础题目:(本类题目属于验证性的,要求学生独立完成) [题目一]:从键盘上输入AOV网的顶点和有向边的信息,建立其邻接表存储结构,然后对该图拓扑排序,并输出拓扑序列. 试设计程序实现上述AOV网 的类型定义和基本操作,完成上述功能。 [题目二]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 测试数据:教材图7.29 【题目五】连通OR 不连通 描述:给定一个无向图,一共n个点,请编写一个程序实现两种操作: D x y 从原图中删除连接x,y节点的边。 Q x y 询问x,y节点是否连通 输入 第一行两个数n,m(5<=n<=40000,1<=m<=100000) 接下来m行,每行一对整数 x y (x,y<=n),表示x,y之间有边相连。保证没有重复的边。 接下来一行一个整数 q(q<=100000) 以下q行每行一种操作,保证不会有非法删除。 输出 按询问次序输出所有Q操作的回答,连通的回答C,不连通的回答D 样例输入

3 3 1 2 1 3 2 3 5 Q 1 2 D 1 2 Q 1 2 D 3 2 Q 1 2 样例输出 C C D 【题目六】 Sort Problem An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that A < B, B < C and C < D. in this problem, we will give you a set of relations of the form A < B and ask you to determine whether a sorted order has been specified or not. 【Input】 Input consists of multiple problem instances. Each instance starts with a line containing two positive integers n and m. the first value indicated the number of objects to sort, where 2 <= n<= 26. The objects to be sorted will be the first n characters of the uppercase alphabet. The second value m indicates the number of relations of the form A < B which will be given in this problem instance. 1 <= m <= 100. Next will be m lines, each containing one such relation consisting of three characters: an uppercase letter, the character "<" and a second uppercase letter. No letter will be outside the range of the first n letters of the alphabet. Values of n = m = 0 indicate end of input. 【Output】 For each problem instance, output consists of one line. This line should be one of the following three: Sorted sequence determined: y y y… y. Sorted sequence cannot be determined. Inconsistency found.

数据结构实验七图的创建与遍历

实验七图的创建与遍历 实验目的: 通过上机实验进一步掌握图的存储结构及基本操作的实现。 实验内容与要求: 要求: ⑴能根据输入的顶点、边/弧的信息建立图; ⑵实现图中顶点、边/弧的插入、删除; ⑶实现对该图的深度优先遍历; ⑷实现对该图的广度优先遍历。 备注:单号基于邻接矩阵,双号基于邻接表存储结构实现上述操作。算法设计: #include #include #define INFINITY 32767 #define MAX_VEX 20 //最大顶点个数 #define QUEUE_SIZE (MAX_VEX+1) //队列长度 using namespace std; bool *visited; //访问标志数组 //图的邻接矩阵存储结构 typedef struct{ char *vexs; //顶点向量 int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵 int vexnum,arcnum; //图的当前顶点数和弧数 }Graph; //队列类 class Queue{ public: void InitQueue() { base=(int *)malloc(QUEUE_SIZE*sizeof(int)); front=rear=0;

. } void EnQueue(int e) { base[rear]=e; rear=(rear+1)%QUEUE_SIZE; } void DeQueue(int &e) { e=base[front]; front=(front+1)%QUEUE_SIZE; } public: int *base; int front; int rear; }; //图G中查找元素c的位置 int Locate(Graph G,char c) { for(int i=0;i

数据结构实验报告(2015级)及答案

数据结构实验报告(2015级)及答案

《数据结构》实验报告 专业__信息管理学院______ 年级__2015级___________ 学号___ _______ 学生姓名___ _ _______ 指导老师____________ 华中师范大学信息管理系编

I 实验要求 1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。 2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。 3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。 4.上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。 II 实验内容 实验一线性表 【实验目的】 1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。 2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。 3.熟练掌握线性表的综合应用问题。 【实验内容】 1.一个线性表有n个元素(n

的顺序不变。设计程序实现。要求:采用顺序存储表示实现;采用链式存储表示方法实现;比较两种方法的优劣。 2. 从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。 要求: ①指定的值x由键盘输入; ②程序能处理空链表的情况。 3.设有头结点的单链表,编程对表中的任意值只保留一个结点,删除其余值相同的结点。 要求: ①该算法用函数(非主函数)实现; ②在主函数中调用创建链表的函数创建一个单链表, 并调用该函数,验证算法的正确性。 LinkedList Exchange(LinkedList HEAD,p)∥HEAD是单链表头结点的指针,p是链表中的一个结点。本算法将p所指结点与其后 继结点交换。 {q=head->next;∥q是工作指针,指向链表中当前待处理结点。 pre=head;∥pre是前驱结点指针,指向q的前驱。 while(q!=null && q!=p){pre=q;q=q->next;} ∥

2010年数据结构期中考试试卷及答案

《数据结构》期中试卷(2009级) 2010-2011学年第一学期姓名:学号:成绩: 一、选择题:(每小题2分,共20分) 1.有六个元素6,5,4,3,2,1 的顺序进栈,下列哪一个不是合法的出栈序列?() A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6 2.在一个有125个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动() 个元素。 A.8 B. 62.5 C. 62 D. 7 3. 已知广义表A=((a,b,c),(d,e,f),(h,(i,j)),g),从A表中取出原子项e的运算是:( ) A.head(tail(A)) B.head(tail(tail(A))) C.head(head(tail(tail(A)))) D.head(tail(head(tail(A)))) 4.循环队列存储在数组A[0..m]中,设front和rear分别为队列的头指针和尾指针,则入队 时的操作为()。 A. front=( front +1) mod (m+1) B. rear=(rear+1) mod (m+1) C. front=( front +1) mod m D. rear=(rear+1) mod m 5. 在双向循环链表中,在p指针所指向的结点前插入一个指针q所指向的新结点,其修改指 针的操作是( ) (假设双向循环链表的结点结构为(llink,data,rlink)。A.p->llink=q; q->rlink=p;p->llink->rlink=q;q->llink=q; B.p->llink=q;p->llink->rlink=q ;q->rlink= p;q->llink=p->llink; C.q->rlink=p;q->llink=p->llink;p->llink->rlink=q; p->llink=q; D.q->llink=p->llink;q->rlink=p;p->llink=q;p->llink=q; 6. 一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。 A.250 B.500 C.254 D.以上答案都不对 7. 已知一棵二叉树的前序遍历结果为ABCDEF, 中序遍历结果为CBAEDF, 则后序遍历的结果 为()。 A.CBEFDA B.FEDCBA C.CBEDFA D.不定 8. 利用二叉链表存储树时,则根结点的右指针是()。 A.指向最左孩子B.指向最右孩子C.空D.非空 9.设有二维数组A[0..9, 0..19], 其中每个元素占两个字节,第一个元素的存储地址为100, 若按列优先顺序存储,则元素A[6,6]存储地址为( )。 A. 252 B. 132 C. 352 D.232 10. 引入二叉线索树的目的是() A.加快查找结点的前驱或后继的速度 B.为了能在二叉树中方便的进行插入与删除 C.为了能方便的找到双亲 D.使二叉树的遍历结果唯一

数据结构实验报告-答案

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测 试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"" #include"" #include"" #include"" typedef struct node . . 示意图:

head head head 心得体会: 本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。

实验2 实验题目:二叉树操作设计和实现 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历 的操作,求所有叶子及结点总数的操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针), 如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求 所有叶子及结点总数。 实验代码 #include"" #include"" #include"" #define Max 20 ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge; R[i] 留在原位

数据结构复习题2010

数据结构复习题 一、填空题 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的和运算等的学科。 2. 数据结构包括数据的、数据的和数据的等三个方面的内容。 3. 数据结构按逻辑结构可分为两大类,它们分别是和。 4.从逻辑关系上讲,数据结构主要分为、、和。 5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系。 6.在线性结构中,第一个结点前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点后续结点,其余每个结点有且只有1个后续结点。 7. 在树形结构中,树根结点没有结点,其余每个结点有且只有个前驱结点;叶子结点没有结点,其余每个结点的后续结点数可以。 8. 在图形结构中,每个结点的前驱结点数和后续结点数可以。 9.数据的存储结构常用的有两种,它们分别是存储结构和存储结构。 10.在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。 11. 在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也称为 的数据结构。 12. 顺序表中逻辑上相邻的元素的物理位置相邻。单链表中逻辑上相邻的元素的物理位置相邻。在双链表中,每个结点设置了两个指针域,其中一个指向结点,另一个指向结点。 13.线性表、栈和队列都是结构,可以在线性表的位置插入和删除元素;对于栈只能在插入和删除元素;对于队列只能在插入和删除元素。 14. 栈是一种特殊的线性表,允许插入和删除运算的一端称为。不允许插入和删除运算的一端称为。 15. 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。 16. 栈和队列是两种特殊的线性表,栈的操作特性是,队列的操作特性是,栈和队列的主要区别在于对。 17.顺序栈或链栈进行插入和删除操作的时间复杂度分别是,顺序队列或链队列进行插入和删除操作的时间复杂度都是。 18. 称为空串; 称为空白串。 19. 子串的定位运算称为串的模式匹配;称为目标串,称为模式。 20.两个串相等的充分必要条件是。 22.一棵深度为6的满二叉树有个分支结点和个叶子结点。 23. 设一棵完全二叉树具有1000个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个结点只有非空左子树,有个结点只有非空右子树。 24.一棵具有257个结点的完全二叉树,它的深度为。 25.设一棵完全二叉树有700个结点,则共有个叶子结点。

数据结构第六章实验

#include #include #include typedef struct{ unsigned int weight; unsigned int parent,lchild,rchild; }HTNode,*HuffmanTree; typedef char * *HuffmanCode; /*void Select(HuffmanTree &HT,int n,int &s1,int &s2) { s1=1;int j; for(j=1;j<=n;j++) { while(HT[j].parent==0) { if(HT[s1].weight>HT[j].weight) s1=j; } } HT[s1].parent=1; if(s1!=1)s2=1;else s2=2; for( j=1;j<=n;j++) { while(HT[j].parent==0) { if(HT[s2].weight>HT[j].weight) s2=j; } } }错误,未查出原因*/ int min(HuffmanTree t,int i) { int j,flag; unsigned int k; for(j=1;j<=i;j++) if(t[j].weight

数据结构实验报告-答案.doc

数据结构实验报告-答案 数据结构(C语言版)实验报告专业班级学号姓名实验1实验题目:单链表的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求:建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤:1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序:(1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码:#include“stdio.h“#include“string.h“#include“stdlib.h“#include“ctype. h“typedefstructnode//定义结点{chardata[10];//结点的数据域为字符串structnode*next;//结点的指针域}ListNode;typedefListNode*LinkList;//自定义LinkList单链表类型LinkListCreatListR1();//函数,用尾插入法建立带头结点的单链表LinkListCreatList(void);//函数,用头插入法建立带头结点的单链表ListNode*LocateNode();//函数,按值查找结点voidDeleteList();//函数,删除指定值的结点voidprintlist();//函数,打印链表中的所有值voidDeleteAll();//函数,删除所有结点,释放内存

数据结构2010

2010年招收攻读硕士学位研究生入学考试试题(副题) ******************************************************************************************** 学科、专业名称:计算机技术、软件工程 研究方向:各专业 考试科目名称:830数据结构 考生注意:所有答案必须写在答题纸(卷)上,写在本试题上一律不给分。 一.选择题(每题2分,共40分) 1.具有n个顶点的完全有向图的边数为( ). A n(n-1)/2 B n(n-1) C n2 D n2-1 2.队列操作的原则是() A.先进先出 B.后进先出 C.只能进行插入 D.只能进行删除 3. 顺序栈S的Pop(S, e)操作弹出元素e,则下列( )是正确的操作。 A. e=*(s.top) B. e=*(s.top--) C. e=*(--s.top) D. e=--s.top 4. 对具有n个结点的有序表折半查找时,其时间复杂度是 ( ) 。 A. O(log2n) B. O(nlog2n) C. O(n) D. O(n2) 5. 若线性表最常用的操作是存取第i个元素及其前趋的值,则采用( )存储方式节省时间。 A.单链表 B.双链表 C.单循环链表 D.顺序表 6. 线性表的链接实现有利于( )运算 A.插入 B. 读表元素 C .查找 D.定位 7. 设连通图G的顶点数为n,则G的生成树的边数为( ) A. n B. n-1 C.2n D. 2n-1 8.从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动()个元素。 A.n-i B.n-i+1 C.n-i-1 D. i 9. 若有一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是() A.n-i B.n-i-1 C.n-i+1 D.不确定 10. 二叉树第i(i≥1)层上至多有( )个结点。 A. 2i B.2i C.2i-1 D.2i-1 11.串是一种特殊的线性表, 其特殊性体现在( ) A.可以顺序存储 B.数据元素是一个字符 C.可以链接存储 D.数据元素可以是多个 12. 稀疏矩阵一般的压缩存储方法有两种,即: ( ) A.二维数组和三维数组 B.三元组和散列 C.三元组和十字链表 D.散列和十字链表 考试科目:数据结构共 4 页,第 1 页

数据结构实验六 图的应用及其实现

实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOE网在邻接表上的实现及解决简单的应用问题。 二、实验内容 [题目]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 三、实验步骤 (一)、数据结构与核心算法的设计描述 本实验题目是基于图的基本操作以及邻接表的存储结构之上,着重拓扑排序算法的应用,做好本实验的关键在于理解拓扑排序算法的实质及其代码的实现。 (二)、函数调用及主函数设计 以下是头文件中数据结构的设计和相关函数的声明: typedef struct ArcNode // 弧结点 { int adjvex; struct ArcNode *nextarc; InfoType info; }ArcNode; typedef struct VNode //表头结点 { VertexType vexdata; ArcNode *firstarc; }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct //图的定义 { AdjList vertices; int vexnum,arcnum; int kind; }MGraph; typedef struct SqStack //栈的定义 { SElemType *base; SElemType *top; int stacksize;

}SqStack; int CreateGraph(MGraph &G);//AOE网的创建 int CriticalPath(MGraph &G);//输出关键路径 (三)、程序调试及运行结果分析 (四)、实验总结 在做本实验的过程中,拓扑排具体代码的实现起着很重要的作用,反复的调试和测试占据着实验大量的时间,每次对错误的修改都加深了对实验和具体算法的理解,自己的查错能力以及其他各方面的能力也都得到了很好的提高。最终实验结果也符合实验的预期效果。 四、主要算法流程图及程序清单 1、主要算法流程图: 2、程序清单: 创建AOE网模块: int CreateGraph(MGraph &G) //创建有向网 { int i,j,k,Vi,Vj; ArcNode *p; cout<<"\n请输入顶点的数目、边的数目"<

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

数据结构2009-2010-1-期末考试试卷

杭州师范大学信息科学与工程学院2009-2010学年第一学期期末考试 《数据结构》试卷(A ) Item Number Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ total mark Note: Please write your answers on the answer sheet. 注意:请将答案填写在答题纸上。 I. Please select the answer for the following problems.(20 points) (1). The running time of binary search (二分查找) is ( ) A.(1)O B.()O N C.(log )O N D.(log )O N N (2). The running time of Quicksort (快速排序) is ( ) A.(1)O B.()O N C.2()O N D.(log )O N N (3).Given a directed graph represented by adjacency matrix, then the number of '1' in each column means ( ). A. in-degree of each vertex B. out-degree of each vertex C. the number of edges D. the number of connected components(连通分量) (4). Among the following sorting algorithms, ( ) has the average run time O(NlogN) with max extra space. A. Merge sort B. Heap sort C. Quick sort D. Shell sort (5).Given a complete undirected graph(无向完全图) with n vertices, the maximum number of edges in the graph must be ( ). A. n B. n ( n – 1) / 2 C. n + 1 D. n – 1 (6). In the following integer sequences, ( ) is NOT a heap(堆). A. {100, 98, 85, 82, 80, 77, 66, 60, 40, 20, 10} B. {100, 85, 98, 77, 80, 60, 82, 40, 20, 10, 66} C. {10, 20, 40, 60, 66, 77, 80, 82, 85, 98, 100} D. {100, 85, 40, 77, 80, 60, 66, 98, 82, 10, 20} (7). If the input to a stack is 1,2,3, and the output must not ( ). A. 1,2,3 B. 3,1,2 C. 3,2,1 D. 2,1,3 (8). If each node has only the left and right-child, in a binary tree of N nodes, there are ( ) NULL pointers representing children. A. N B.N 2 C.N+1 D.1 (9). For any nonempty binary tree, there are ( ) where n0 is the number of leaf nodes and n2 the number of nodes of degree 2. A. n2 = n1+1 B. n0 = n2+1 C. n0= n2 D. n0 = n2+2 (10). Given an circular queue (循环队列) Q[maxSize] with front and rear pointer (initially, front = 1 and rear = 0), its maximum capacity is maxSize and there is no other elements in it, then the condition of queue full is ( ). A. Q.front == Q.rear B. Q.front+Q.rear >= maxSize C. Q.front == (Q.rear+1) % maxSize D. Q.front == (Q.rear+2) % maxSize II. Please fill in the blank lines (12 points) Given an integer sequence 50, 60, 45, 32, 72, 63, 84, 35, 20, 78 and sorting them with an increasing order, please complete three problems (as below shows) and fill the solutions in blank lines on the answer sheet . (1) After the first run of the merge sorting(归并排序), the integer sequence is(4 points): __________________________________________________. (2) After the run of the shell sorting(希尔排序) by an increment 3, the integer sequence is (4 points): __________________________________________________. score score 班级: 学号: 姓名: 装 订 线 数据结构试题(第1页 共3页)

相关主题