文档库 最新最全的文档下载
当前位置:文档库 › 2015年南京邮电大学数据结构初试真题

2015年南京邮电大学数据结构初试真题

2015年南京邮电大学数据结构初试真题
2015年南京邮电大学数据结构初试真题

2015年南京邮电大学数据结构考研初试题目

判断题(共15题*2分)

1.消除递归不一定需要使用栈,此说法()

2.稀疏矩阵压缩存储后,必会失去随机存取功能()

3.完全二叉树中,若一个结点没有左孩子,则它必是叶结点()

4.连通分量是无向图的极大强连通子图()

5.在9阶B-树中,除叶子以外的任意结点的分支数介于5和9之间()

6.在平衡二叉树中,向某个平衡因子不为零的结点的树中插入一新结点,必引起平衡旋转()

7.10个叶子结点的哈弗曼树,其高度最小为58.队列和栈不可以使用散列存储()

选择题(共15题*2分)

1.以下属于逻辑结构的是()。

A.顺序表B.哈希表 C.有序表 D.单链表

2.下列数据中,()是非线性数据结构。

A.栈B.队列C.完全二叉树D.堆

3.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表

4.循环队列存储在数组A[0..m]中,则入队时的操作为()。

A.rear=rear+1

B.rear=(rear+1)mod(m-1)

C.rear=(rear+1)mod m

D.rear=(rear+1)mod(m+1)

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

A.先序线索二叉树中求先序后继B.中序线索二叉树中求中序后继C.中序线索二叉树中求中序前驱D.后序线索二叉树中求后序后继6.下面几个符号串编码集合中,不是前缀编码的是()。

A.{0,10,110,1111}B.{11,10,001,101,0001}

C.{00,010,0110,1000}

D.{b,c,aa,ac,aba,abb,abc}

7.用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为()。

A.5B.6C.8D.9

8.下列关于AOE网的叙述中,不正确的是()。

A.关键活动不按期完成就会影响整个工程的完成时间

B.任何一个关键活动提前完成,那么整个工程将会提前完成

C.所有的关键活动提前完成,那么整个工程将会提前完成

D.某些关键活动提前完成,那么整个工程将会提前完成

9.m阶B-树是一棵()

A.m叉排序树

B.m叉平衡排序树

C.m-1叉平衡排序树

D.m+1叉平衡排序树

10.关于杂凑查找说法不正确的有几个()【南京理工大学2000一、16(1.5分)】

A.采用链地址法解决冲突时,查找一个元素的时间是相同的

B.采用链地址法解决冲突时,若插入规定总是在链首,则插入任一个元素的时间是相同的

C.用链地址法解决冲不易引起聚集现象

D.再哈希法不易产生聚集

11.在下列排序算法中,哪一个算法一趟不能确定一个元素的最终位置()。

A.直接插入 B.冒泡排序C.快速排序D.简单选择排序

简答题(共5题*10分)

1.举例说明顺序队的“假溢出”现象,并给出解决方案

2.什么是算法?算法有哪些特征?

在程序设计算法中引入“程序步”,是不是"程序步"越少执行效率越高?

3.设T是具有n个内结点的扩充二叉树,I是它的内路径长度,E是它的外路径长度。

(1)试利用归纳法证明E=I+2n,n>=0.

(2)利用(1)的结果试说明:成功查找的平均比较次数s与不成功查找的平均比较次数u之间的关系可用公式表示

s=(1+1/n)u-1,n>=1。

4.一个图有0,1,2,3,4,5共6个结点,插入边

(1,0)(1,3)(2,1)(2,3)(3,0)(3,2)(3,4)(4,1)(4,5)

(1)画出对应的邻接矩阵

(2)写出所有强连通分量

5.试画出从空树开始,由字符序列(t,d,e,s,u,g,b,j,a,k)构成的二叉平衡树,并为每一次的平衡处理指明旋转类型。再次插入字符a,画出此时的平衡二叉树

编程题(共4题*10分)

1.实现利用队列将栈中元素逆置并说明算法

2.已知无向图采用邻接表存储方式,试写出删除边(i,j)的算法。

3.有线性表(a1,a2,…,an),采用单链表存储,头指针为H,每个结点中存放线性表中一个元素,现查找某个元素值等于X的结点。分别写出下面三种情况的查找语句。要求时间尽量少。

(1)线性表中元素无序。(2)线性表中元素按递增有序。(3)线性表中元素按递减有序。

4.给定集合S,S的幂集是指以集合S的所有子集为元素构成的集合,利用递归算法编程求集合S的幂集

2015年南京邮电大学数据结构初试真题

2015年南京邮电大学数据结构考研初试题目 判断题(共15题*2分) 1.消除递归不一定需要使用栈,此说法() 2.稀疏矩阵压缩存储后,必会失去随机存取功能() 3.完全二叉树中,若一个结点没有左孩子,则它必是叶结点() 4.连通分量是无向图的极大强连通子图() 5.在9阶B-树中,除叶子以外的任意结点的分支数介于5和9之间() 6.在平衡二叉树中,向某个平衡因子不为零的结点的树中插入一新结点,必引起平衡旋转() 7.10个叶子结点的哈弗曼树,其高度最小为58.队列和栈不可以使用散列存储() 选择题(共15题*2分) 1.以下属于逻辑结构的是()。 A.顺序表B.哈希表 C.有序表 D.单链表 2.下列数据中,()是非线性数据结构。 A.栈B.队列C.完全二叉树D.堆 3.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()储方式最节省运算时间。 A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表 4.循环队列存储在数组A[0..m]中,则入队时的操作为()。 A.rear=rear+1 B.rear=(rear+1)mod(m-1)

C.rear=(rear+1)mod m D.rear=(rear+1)mod(m+1) 5.二叉树在线索后,仍不能有效求解的问题是()。 A.先序线索二叉树中求先序后继B.中序线索二叉树中求中序后继C.中序线索二叉树中求中序前驱D.后序线索二叉树中求后序后继6.下面几个符号串编码集合中,不是前缀编码的是()。 A.{0,10,110,1111}B.{11,10,001,101,0001} C.{00,010,0110,1000} D.{b,c,aa,ac,aba,abb,abc} 7.用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为()。 A.5B.6C.8D.9 8.下列关于AOE网的叙述中,不正确的是()。 A.关键活动不按期完成就会影响整个工程的完成时间 B.任何一个关键活动提前完成,那么整个工程将会提前完成 C.所有的关键活动提前完成,那么整个工程将会提前完成 D.某些关键活动提前完成,那么整个工程将会提前完成 9.m阶B-树是一棵() A.m叉排序树 B.m叉平衡排序树 C.m-1叉平衡排序树 D.m+1叉平衡排序树 10.关于杂凑查找说法不正确的有几个()【南京理工大学2000一、16(1.5分)】 A.采用链地址法解决冲突时,查找一个元素的时间是相同的

南邮数据结构上机实验二二叉树的基本操作及哈夫曼编码译码系统的实现

实验报告 (2015 / 2016学年第二学期) 课程名称数据结构A 实验名称二叉树的基本操作及哈夫曼编码译码系统的实现 实验时间2016 年 4 月14 日 指导单位计算机科学与技术系 指导教师骆健 学生姓名班级学号 学院(系) 管理学院专业信息管理与信息系统

实习题名:二叉树的基本操作 班级姓名学号日期2016.04.14 一、问题描述 设计递归算法,实现下列二叉树运算:删除一棵二叉树、求一棵二叉树的高度、求一棵二叉树中叶子结点数、复制一棵二叉树、交换一棵二叉树的左右子树。设计算法,按自上到下,从左到右的顺序,按层次遍历一棵二叉树。设计main函数,测试上述每个运算。 二、概要设计 文件tree.cpp中在该文件中定义二叉树的链式存储结构,用队列实现二叉树的层次遍历,并且编写实现二叉树的各种基本操作函数。其中包括结点类BTNode,循环队列类SeqQueue,二叉树类BinaryTree。主函数main的代码如图所示。 三、详细设计 1.类和类的层次设计 程序定义了循环队列SeqQueue类和二叉树BinaryTree类。SeqQueue类主要是用队列实现,层次遍历。运用后序遍历思想,把树分解为左右子树和跟结点再进行左右交换并计算树的高度,最后删除二叉树。

(a )循环队列类 (b )二叉树类 2. 核心算法 程序利用循环队列SeqQueue 类通过不断出队并输出节点的值,将左右孩子入队直到队列为空实现二叉树的层次遍历。并运用后序遍历思想,将二叉树树分解为左右子树和根结点,利用(p -> lChild)和(p -> rChild)计算结点数目,并通过交换结点的左右子树实现左右交换,计算树的高度,最后删除二叉树。核心算法主要是二叉树BinaryTree 类中的High ,Node_num ,Exchange ,Level_traversal 四个函数,其设计流程图如下: SeqQueue -int front, rear; -int maxSize; -BTNode **q; +SeqQueue(int mSize); +~SeqQueue(){delete []q;} +bool IsEmpty() const{return front == rear;} +bool IsFull() const{return (rear + 1) % maxSize == front;} +bool Front(BTNode *&x)const; +bool EnQueue(BTNode *x); +bool DeQueue(); +void Clear(){front = rear = 0;} BinaryTree +BinaryTree():s(100){root = NULL;} +~BinaryTree(){delete []root;} +bool Clear(); +void MakeTree(constT&x,BinaryTree&left,BinaryTree& right); +int High(BTNode*p); +int Node_num(BTNode*p); +BTNode*Copy (BTNode*t); +void Exchange(BTNode *&t); +void Level_traversal(void(*Visit)(T&x)); #SeqQueue s; -void Clear(BTNode* &t); -void Level_traversal(void(*Visit)(T&x),BTNode*t); T T

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

南邮通信原理真题

南邮通信原理真题集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

南京邮电大学 2014硕士研究生入学考试初试试题 一.选择填空题 选项在本题末。有些选项可以重复选,也可以从不选。 1.信息量定义的原则,它是消息出现(1)的(2)函数,它还必须满足(3)。 2.模拟信道数学模型是(4);二进制数字信道模型是(5)。 3.若单音调制时,双边带DSB调整值的输出信噪比为SNR=S i/n0f m,其中fm为调制信号带宽,si为接受信号功率,n0为信道噪声功率谱。则下列调制的输出信噪比分别为:调制指数为1的AM调制为(6);SSB调制为(7);调制指数为2的FM调制(8)。 4.时域均衡采用(9)滤波器,以消除(10)。 5.数字已调信号的检测=(11)+(12)。 6.格雷码的作用是在数字调制中使得码字的(13)距离与星座点的(14)距离相适应。 7.在数字通信系统中,控制差错的方法有(15)、(16)和(17)三大类。

8.扩展频谱通信用低速率的(18)序列对高速率的(19)序列进行(20),因而提高信号的(21)能力。在无线信道上传输,它能够提供(22)。尽管它占用的频带增大,但是与(23)相结合,不会降低(24)。 9.载波同步和符号同步都可以采用(25)法和(26)法。 a)(1/3)SNR n)汉明 b) 6SNR o)横向 c) ARQ p)解调 d) FEC q) 抗干扰 e) HARQ r)可加性 f) SNR s)调制 g) s0(t)=f[s i(t)]+n(t) t)码分多址 h) PN u)码间干扰 i)抽样判决 v)欧式 j)单调减 w)频带利用率 k)导频辅助 x)信号变换

南京邮电大学2005年数据结构考研试卷

南 京 邮 电 学 院 2005年攻读硕士学位研究生入学考试 数 据 结 构 试 题 一、单选题(每题3分,共30分) 1. 设使用某算法对n 个元素进行处理,所需的时间是 T(n) = 100n log 2n + 200n + 2000 则该算法的渐进时间复杂度为 。 A. O(1) B. O(n) C. O(200n) D. O(nlog 2n) 2. 设顺序表的长度为n ,并设从表中删除元素的概率相等。则在平均情况下,从表中删除一个元素需要移动的元素个数是 。 A. (n -1)/2 B. n/2 C. n(n -1)/2 D. n(n +1)/2 3. 如果只保存一个n 阶对称矩阵a 的下三角元素(含对角线元素),并采用行主序存储在一维数组b 中,a[i][j](或a[i, j])存于b[k],则对i

数据结构实验报告-答案

数据结构(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通原真题

南京邮电大学 2010年攻读硕士学位研究生入学考试 通信系统原理试题 01-05:DDCBD 06-10:BDDDB 注意事项:所有答案写在答题纸上,并标明每题的题号,计算题要求解题步骤完整,保持卷面整洁。 一、选择题(每题2分,共60分) 1、纠错码的应用可以改善通信系统的误码性能,但是付出的代价是___D___。 A)误码率B)信噪比C)效率D)带宽 2、滚降滤波器信道的应用,是牺牲带宽,换取接收机___D_____。 A)频带利用率B)抗干扰性C)抗噪声性D)抗定时抖动能力3、PCM信号的带宽是相应模拟信号带宽的__C____倍。 A)0.5 B)2 C)20D)0.1 4、单音100%调制AM信号的制度增益约是___B___,SSB的制度增益是______。 A)2,2 B)2/3,1 C)1/3,2 D)1/9,1 ?5、下列不含离散谱只含连续谱的信号是__D__。 A)DPSK,AM B)PSK,FSK C)MSK,PSK D)DSB,PSK 6、要传100kB的基带信号,无码间干扰100%滚降信道的带宽为__B____,这时频带利用率为______。 A)100kHz,2B/Hz B)100kHz,1B/Hz C)150kHz,2B/Hz D)140kHz,2B/Hz 7、偶监督码的最小汉明距离为__D____,则最多可纠正______位错。 A)6,2 B)5,4 C)4,2 D)2,0 8、PCM3032系统帧长为__D____微秒,含码元个数为______位。 A)64,128 B)64,64 C)256,125 D)125,256 9、样值为-139个标准单位,则A律13折统量化编码的极性码为__D____,段落码为______。A)0,110 B)1,100 C)1,101 D)0,100 10、准同步数字序列一次群帧结构含有___B___个非话路时障,故非话音比特的速率为______kbits/s。 A)30,2 B)2,128 C)2,64 D)32,2 11-15:ADBAB 16-20:BDCAB 11、电缆信道中继属于_A_____信道,短波电离层信道属于______信道。 A)恒参,随参B)恒参,时不变C)恒参,恒参D)恒参,定参 ?12、采用多进制信号传输二进制序列可以节省__D____,付出的代价是______。 A)功率,带宽B)时间,复杂度C)带宽,信噪比D)时间,信噪比

数据结构A复习要点及样题(南邮)

数据结构A复习要点 第1章基础知识 算法与数据结构(数据结构概念、逻辑结构、数据存储结构示等) 数据抽象和抽象数据类型(数据结构规范、实现) 算法分析的基本方法(时间复杂性、空间复杂性) 第2章线性表 线性表的顺序和链接表示 理解在顺序表、单链表上实现线性表运算,能设计相应算法程序 顺序和链接表示的优缺点比较 第3章堆栈和队列 了解栈和队列的概念、特点 理解顺序栈和循环队列运算的实现 中缀表达式与后缀表达式的转换 后缀表达式计算 第4章数组和字符串 一般数组存储方法 三元组存储稀疏矩阵的方法 三元组表示的快速矩阵转置方法 字符串的概念、KMP算法及其改进 第5章树 二叉树的定义、性质及二叉链表 理解二叉树的遍历算法(遍历结果、算法设计),能设计相应算法程序 堆、堆的建立和调整 森林与二叉树的相互转换 哈夫曼树构造、哈夫曼编码、WPL计算 第6章集合与搜索 理解有序表的顺序搜索算法 理解对半搜索算法 平均搜索长度的计算 第7章搜索树 理解二叉搜索树的定义、性质和插入、删除算法 二叉平衡树的定义及插入算法 B-树的定义和插入、删除方法 第8章散列表 掌握散列函数的相关概念 散列函数 解决冲突的开地址法(线性探查法,二次探查法、双散列法) 第9章图 图的基本概念和存储结构 理解图的算法(结果):遍历、拓扑排序、最小代价生成树、关键路径、最短路径第10章内排序 三种简单排序算法、快速排序和两路合并排序算法、过程、结果 排序算法的时间复杂度(最好、最差,平均)、稳定性 第11章文件 文件的基本概念 初始游程的生成及竞赛树

考试样题 填空题 写出表达式a*b+c/d的后缀形式________。 已知一无向图G=(V,E),其中V={a,b,c,d,e},E={(a,b), (a,d), (a,c) (d,c), (b,e)},现用某一种遍历方法从顶点a开始遍历图,得到的序列为abecd,则采用的是__________遍历方法。 在顺序表长度为n中,平均在表中插入一个元素需要移动元素的个数可用计算公式为________。 一个表长为n的线性表,其排序时间最快为。 选择题 具有n 个顶点的有向完全图中,边的总数为()条。 A)n(n+1) B)n(n-1) C)n(n-1)/2 D)n(n+1)/2 设一个栈输入序列是1、2、3、4、5,则下列序列中不可能是栈的输出序列是()。 A)32541 B)15432 C)14523 D)23145 二叉树的前序遍历为EFHIGJK,中序遍历序列为HFIEJKG。该二叉树根结点的右子树的根是() A) E B) F C) G D) H 对有14个元素的有序表A[1]-A[14]作对半查找,查找元素A[4]时的被比较元素依次为() A. A[1],A[2],A[3],A[4] B.A[7],A[3],A[5],A[4] C. A[1],A[2],A[7],A[4] D.A[7],[A5],A[3],A[4] 设有一个长度为100且已排好序的表,用对半搜索进行查找,若搜索不成功,则至少要比较______次。 () A.9 B.8 C.7 D.6 简答题 用一维数组存放的一棵完全二叉树如图所示: 图 写出前序、中序、后序遍历该二叉树时访问结点的顺序。 图的邻接表表示一个给定的无向图。 (1)给出从顶点v1开始,用深度优先搜索法进行遍历时的顶点序列; (2)给出从顶点v1开始,用广度优先搜索法进行遍历时的顶点序列。

青岛大学05数据结构

青岛大学2005年硕士研究生入学考试试题 学科代码:407 科目名称:数据结构(共4页)请考生写明题号,将答案全部答在答题纸上,答在试卷上无效 一.单项选择题(本大题共10道小道小题,每小题3分,共30分) 1. 算法的时间复杂度取决于【】 A. 问题的规模 B. 待处理数据的初始状态 C. 软件和硬件的组合 D. 操作系统 2. 向一个栈顶指针为top的链栈中插入一个s结点,则执行【】 A. top->next=s; B. s->next=top->next; top->next=s; C. s->next=top; top=s; D. s->next=top; top=top->next; 3. 广义表((a))的表头是【】 A. a B. (a) C. () D. ((a)) 4. 由带权为8、2、5、7的叶子结点构造一棵哈夫曼树,该树的带权路径长度为【】 A. 37 B. 32 C. 46 D. 43 5. 采用邻接表存储的图,其BFS算法类似于二叉树的【】 A. 中序遍历 B. 先序遍历 C. 后序遍历 D. 按层遍历 6. 在非空m阶B_树上,除根结点之外的所有其他非终端结点【】 A. 至少有??2/m棵子树 B.至多有??2/m棵子树 C. 至少有??2/m棵子树 D. 至多有??2/m棵子树 7. 对线性表进行顺序查找时,要求线性表的存储结构为【】 A. 散列存储 B. 顺序存储或者链式存储 C. 压缩存储 D. 索引存储 8. 在关键字“基本有序”的情况下,最佳排序算法为【】 A. 快速排序 B. 冒泡排序 C. 直接插入排序 D. 基数排序 9. 折半查找法和二叉排序树的时间性能【】 A. 与处理数据量有关 B. 相同 C. 不相同 D. 不确定 10. 串是一种特殊的线性表,其特殊性体现在【】 A. 可以顺序存储 B. 数据元素是一个字符 C. 可以链接存储 D. 数据元素可以是多个字符 二、填空题(本大题共10小题,每小题2分,共20分) 1. 在具有n个单元的循环队列中,队满时共有____________个元素。 2. 单链表中设置头结点的目的是____________。 3. 消除递归_____________需要使用栈。 4. 在具有n(n≥1)个结点的k叉树中,有_____________个空指针。 5. 深度为5的二叉树至多有_________个结点。 6. 一个连通图的__________是一个极小连通子图。 7. 对稀疏图进行DFS遍历时,应该采用___________作为其存储结构。 8. 在哈希表中,装填因子α越大,则_______________________。

数据结构实验1

1.1实验步骤 随着计算机性能的提高,它所面临的软件开发的复杂度也日趋增加,因此软件开发需要系统的方法。一种常用的软件开发方法,是将软件开发过程分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实习题的复杂度远不如实际中真正的软件系统,但为了培养一个软件工作者所应具备的科学工作的方法和作风,我们制订了如下所述完成实验的5个步骤: 1、问题分析和任务定义 通常,实验题目的陈述比较简洁,或者说有模棱两可的含义。因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么,限制条件是什么,解决问题的关键是什么。注意:本步骤强调的是做什么,而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么,是否接受非法的输入,对非法输入的回答方式是什么等等。这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式输入的数据。 2.数据类型和算法设计 在设计这一步骤中需分概要设计和详细设计两步实现。概要设计指的是,对问题分析中提出的解决问题的关键点进行进一步阐述,提出问题的解决方案(算法思想);详细设计中首先对概要设计中涉及的操作对象定义相应的数据类型,并在具体的存储结构下描述关键问题解决过程;同时要综合考虑程序功能,按照以数据结构为中心的原则划分模块,说明各模块的功能,画出模块之间的调用关系图,模块的划分和调用应使得程序结构清晰、合理、简单和易于调试。详细设汁的结果是对数据结构和基本操作的规格说明作出进一步的求精,定义相应的存储结构并写出各过程和函数的伪码算法。在求精的过程中,应尽量避免陷入语言细节,不必过早表述辅助数据结构和局部变量。 3.编码实现和静态检查 编码是把详细设计的结果进一步求精为程序设计语言程序。如何编写程序才能较快地完成调试是特别要注意的问题。程序的每行不要超过60个字符。每个过程(函数)体一般不要超过40行,最长不得超过60行,否则应该分割成较小的过程(函数)。要控制if语句连续嵌套的深度,分支过多时应考虑使用switch语句。对函数功能和重要变量进行注释。一定要按格式书写程序,分清每条语句的层次,对齐括号,这样便于发现语法错误。 在上机之前,应该用笔在纸上写出详细的程序编码,并做认真地静态检查。多数初学者在编好程序后处于以下两种状态之一:一种是对自己的“精心作品”的正确性确信不疑;另一种是认为上机前的任务已经完成,纠查错误是上机的工作。这两种态度是极为有害的。对一般的程序设计者而言,当编写的程序长度超过50行时,通常会含有语法错误或逻辑错误。上机动态调试决不能代替静态检查,否则调试效率将是极低的。静态检查主要有两种方法,一是用一组测试数据手工执行程序(通常应先检查单个模块);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注解。 4.上机准备和上机调试 上机准备包括以下几个方面: (1)熟悉C语言用户手册或程序设计指导书。 (2)注意Turbo C、VC与标准C语言之间的细微差别。 (3)熟悉机器的操作系统和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行上机的基本活动。 (4)掌握调试工具,考虑调试方案,设计测试数据并手工得出正确结果。“磨刀不误砍柴工”。学生应该熟练运用高级语言的单步调试和程序调试器DEBUG调试程序。

《数据结构》实验1

实验1: 顺序表的操作实验 一、实验名称和性质 二、实验目的 1.掌握线性表的顺序存储结构的表示和实现方法。 2.掌握顺序表基本操作的算法实现。 3.了解顺序表的应用。 三、实验内容 1.建立顺序表。 2.在顺序表上实现插入、删除和查找操作(验证性内容)。 3.删除有序顺序表中的重复元素(设计性内容)。 4.完成一个简单学生成绩管理系统的设计(应用性设计内容)。 四、实验的软硬件环境要求 硬件环境要求: PC机(单机) 使用的软件名称、版本号以及模块: Windows环境下的VC++6.0 五、知识准备 前期要求熟练掌握了C语言的编程规则、方法和顺序表的基本操作算法。 六、验证性实验 1.实验要求 编程实现如下功能: (1)根据输入顺序表的长度n和各个数据元素值建立一个顺序表,并输出顺序表中各元素值,观察输入的内容与输出的内容是否一致。 (2)在顺序表的第i个元素之前插入一个值为x的元素,并输出插入后的顺序表中各元素值。 (3)删除顺序表中第i个元素,并输出删除后的顺序表中各元素值。 (4)在顺序表中查找值为e的数据元素,如果查找成功,则显示“查找成功”和该元素在顺序表中的位置,否则显示“查找失败”。 2. 实验相关原理: 线性表的顺序存储结构称为顺序表,顺序表的存储结构描述为: #define MAXLEN 30 /*线性表的最大长度*/ typedefstruct { Elemtypeelem[MAXLEN]; /*顺序表中存放元素的数组,其中elemtype为抽象数据类型,在程序

具体实现时可以用任意类型代替*/ int length; /*顺序表的长度,即元素个数*/ }Sqlist; /*顺序表的类型*/ 【核心算法提示】 1.顺序表插入操作的基本步骤:要在顺序表中的第i个数据元素之前插入一个数据元素x,首先要判断插入位置i是否合法,假设线性表的表长为n,则i的合法值范围:1≤i≤n+1,若是合法位置,就再判断顺序表是否满,如果满,则增加空间或结束操作,如果不满,则将第i个数据元素及其之后的所有数据元素都后移一个位置,此时第i个位置已经腾空,再将待插入的数据元素x插入到该位置上,最后将线性表的表长增加1。 2.顺序表删除操作的基本步骤:要删除顺序表中的第i个数据元素,首先仍然要判断i 的合法性,i 的合法范围是1≤i≤n,若是合法位置,则将第i个数据元素之后的所有数据元素都前移一个位置,最后将线性表的表长减1。 3.顺序表查找操作的基本步骤:要在顺序表中查找一个给定值为e的数据元素,则可以采用顺序查找的方法,从顺序表中第1个数据元素开始依次将数据元素值与给定值e进行比较,若相等则查找成功,函数返回该数据元素在顺序表中的位置,若顺序表中所有元素都与给定值e不相片,则查找失败,函数返回0值。 【核心算法描述】 status Sqlist_insert(Sqlist&L,inti,Elemtypex) /*在顺序表L中第i个元素前插入新元素x*/ {if (i<1||i>L.length+1) return ERROR; /*插入位置不正确则出错*/ if (L.length>=MAXLEN) return OVERFLOW; /*顺序表L中已放满元素,再做插入操作则溢出*/ for(j=L.length-1;j>=i-1;j--) L.elem[j+1]=L.elem[j];/*将第i个元素及后续元素位置向后移一位*/ L.elem[i-1]=x; /*在第i个元素位置处插入新元素x*/ L.length++; /*顺序表L的长度加1*/ return OK; } status Sqlist_delete(Sqlist&L,inti,Elemtype&e) /*在顺序表L中删除第i个元素*/ {if (i<1||i>L.length)return ERROR; /*删除位置不正确则出错*/ for(j=i;j<=L.length-1;j++) L.elem[j-1]=L.elem[j]; /*将第i+1个元素及后继元素位置向前移一位*/ L.length--; /*顺序表L的长度减1*/ return OK; } int Sqlist_search(SqlistL,Elemtype x) /* 在顺序表中查找值为x的元素,如果找到,则函数返回该元素在顺序表中的位置,否则返回0*/

青岛大学910数据结构

青岛大学2017年硕士研究生入学考试试题 科目代码:910 科目名称:数据结构(共5 页)请考生写明题号,将答案全部答在答题纸上,答在试卷上无效 一、单项选择题(本大题共10 道小题,每小题 2 分,共20 分) 1.计算机算法指的是()。 A.计算方法B. 排序方法C. 解决问题的步骤序列D. 存储结构 2.链表不具有的特点是()。 A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 3.连续存储设计时,存储单元的地址()。 A.一定连续B.一定不连续 C.不一定连续D.部分连续,部分不连续 4.一个递归算法必须包括()。 A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部分 5.栈和队列的共同点是()。 A. 都是先进先出 B. 都是先进后出 C. 只允许在端点处插入和删除元素 D. 没有共同点 6.任何一棵二叉树的叶子结点在先序、中序和后序遍历中的相对次序()。 A.不发生改变B.发生改变C.不能确定D.以上都不对 7.由带权为{8,2,5,7}的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()。 A.23 B.37 C.46 D 43 8.若从无向图的任意一个顶点出发进行一次深度优先搜索可以访问图中所有的顶点,则该图一定是()图。 A.非连通B.连通C.强连通D.有向 9.适用于折半查找的表的存储方式及元素排列要求为()。 A.链接方式存储,元素无序B.链接方式存储,元素有序

C.顺序方式存储,元素无序D.顺序方式存储,元素有序 10.对n 个关键字作快速排序,在最坏情况下,算法的时间复杂度是()。A.O(n) B.O(n2) C.O(nlog2n) D.O(n3) 二、简答题(本大题共 6 道小题,每题5 分,共30 分) 1.如果有n 个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在此情况下,应选用哪种存储结构?为什么? 2.有5 个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素C,D 最先出栈(即 C 第一个且 D 第二个出栈)的次序有哪几个?3.简述树与二叉树的转化方法。试举一个例子说明。 4.简要说明图的各种遍历方法。 5.简述顺序查找和折半查找的优缺点。 6.简要说明归并排序的基本思想。 三、综合应用题(本大题共 4 道小题,每题12 分,共48 分) 1.已知一棵二叉树的中序遍历序列为BCAFEC,后序遍历序列为CBECFA,试画出该二叉树,并给出该二叉树的先序序列。 2.对于下图所示的有向图,试给出: (1)邻接表; (2)从顶点v1 出发的深度优先遍历序列; (3)从顶点v3 出发的广度优先遍历序到。 3.设将关键字集合Keys={2, 6, 7, 5, 4, 3, 1}中的元素依次插入到一个空的平衡二叉排序树中,画出所得的平衡二叉排序树。假设查找每一个元素的概率相同,查找此平衡二叉树排序中任一结点的平均查找长度为多少? 4.某设待排序的关键字集合为{12,2,16,30,28,10,16*,20,6,18},试分别回答下面的问题。 ①给出希尔排序(增量选取5,3,1)的结果;

2001年南邮考研数据结构考研试卷

南 京 邮 电 学 院 2001年攻读硕士学位研究生入学考试 数 据 结 构 试 题 一、完成下列各题(每小题6分,共18分): 1、已知字符串p = ‘abbabbac ’,计算next(7)和nextval(7)的值。 2、给出下列排序算法最坏的情况时间复杂性,并指出其中那些算法是稳定的? ⑴快速排序 ⑵简单选择排序 ⑶堆排序 3、设度为m 的树采用多重链表存储,每个结点有m+1个域,其中有一个数据域,m 个指向孩子的指针域。则空指针的数目是多少?说明这种存储方式的利弊。 二、完成下列各题:(每小题8分,共40分) 1、设二叉树以带右链的先序次序存储,其存储结构如下: 6 3 5 0 0 0 9 0 0 0 E H F I G A B D C J 1 2 3 4 5 6 7 8 9 10 则画出该二叉树。 2 、对于下列AOE 网络,求出各活动可能的最早开始时间和允许的最晚完成时间,并问整个工程的最短完成时间是多少? 3、设有13个初始游程,其长度分别为28,16,33,19,5,7,18,20,12,31,38,22,10。试画出4路合并最佳合并树,并计算它的加权路径长度。 4、设散列表ht 的长度为11,散列函数h 1(key) = key mod 11,h 2(key)=key mod 9+1。采用双重探查法解决冲突,请从空表开始,依次插入下列关键字值序列:70,25,80,35,60,45,50,55,建立散列表。

5、设有初始关键字值序列为:71,74,2,72,54,93,52,28,现采用堆排序方法进行排序,请给出手工执行堆排序的过程。 三、设E是一棵扩充二叉树的外路径长度,I是内路径长度,n是内结点个数。试写出三者的关系式,并使用数学归纳法证明之。(10分) 四、有序表以顺序方式存储,其存储结构说明如下: Type list=array[1..n] of integer 实现下列对半查找的函数过程: Function bisearch(r:list;low,high,tkey:integer):integer; 其中,tkey为待查关键字值。若tkey在表r中,则返回该关键字值在表中的位置,否则返回0。并画出n=10的对半查找判定树。(16分) 五、已知有n个结点的树以双亲表示法存储在一堆数组中。请设计一个的算法求树中每个结点的层次和树的高度,将求得的每个结点的层次保存在一维数组c中,并分析你所设计的算法的时间复杂性。(16分)

青岛大学2020年910数据结构考试大纲

硕士入学考试大纲 考试科目代码及名称:910数据结构 一、考试要求 1、掌握数据结构的基本概念、基本原理和基本方法。 2、掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。 3、能够运用数据结构基本原理和方法进行问题的分析与求解,具备采用C或C++语言设计与实现算法的能力。 二、考试内容 一、线性表 (一) 线性表的定义和基本操作 (二) 线性表的实现 1、顺序存储 2、链式存储 3、线性表的应用 二、栈、队列和数组 (一) 栈和队列的基本概念 (二) 栈和队列的顺序存储结构 (三) 栈和队列的链式存储结构 (四) 栈和队列的应用 (五) 特殊矩阵的压缩存储

三、树与二叉树 (一) 树的基本概念 (二) 二叉树 1、二叉树的定义及其主要特征 2、二叉树的顺序存储结构和链式存储结构 3、二叉树的遍历 4、线索二叉树的基本概念和构造 (三) 树、森林 1、树的存储结构 2、森林与二叉树的转换 3、树和森林的遍历 (四) 树与二叉树的应用 1、二叉排序树 2、平衡二叉树 3、哈夫曼(Huffman) 树和哈夫曼编码 四、图 (一) 图的基本概念 (二) 图的存储及基本操作 1、邻接矩阵法 2、邻接表法 3、邻接多重表、十字链表 (三) 图的遍历

1、深度优先搜索 2、广度优先搜索 (四) 图的基本应用 1、最小(代价) 生成树 2、最短路径 3、拓扑排序 4、关键路径 五、查找 (一) 查找的基本概念 (二) 顺序查找法 (三) 分块查找法 (四) 折半查找法 (五) B-树及其基本操作、B+树的基本概念 (六) 散列(Hash) 表 (七) 字符串模式匹配 (八) 查找算法的分析及应用 六、排序 (一) 排序的基本概念 (二) 插入排序 1、直接插入排序 2、折半插入排序 (三) 冒泡排序(Bubble Sort)

数据结构实验1

一、实验目的 1、学习线性表的顺序表示和实现,会进行顺序表的插入、删除、合并 2、学习线性表的链式表示和实现,会进行链表的插入、删除、合并 二、实验内容 1、编程实现:(1)在顺序表ajcniydu的第三个位置插入p。(2)删除顺序表ajcniydu第三个位置的元素。 2、编程实现将顺序表acdijtuy和cfklns合并。 3、编程实现:(1)在链表asdfghjkl的第四个位置插入z。(2)删除顺序表asdfghjkl第四个位置元素。 4、编程实现两个有序链表adfi和cefi的合并。 三、实验步骤 1.+ 2.代码: #include #include typedef char ElemType; typedef struct { ElemType *elem; int length; int listsize; }SqList; //定义结构体 void InitList(SqList &L) { L.elem=(ElemType*)malloc(10*sizeof(ElemType)); L.length=0; L.listsize=10; }//初始化

{ printf("输入字符串:"); int i=0; for(i;i L.length+1) printf("插入位置不合法!\n"); else { ElemType *q = &(L.elem[i-1]); for (p = &(L.elem[L.length-1]); p>=q; --p) *(p+1) = *p; *q = e; ++L.length; } } //插入 int ListDelete(SqList &L,int i) {

2017年青岛大学考研试题910数据结构

青岛大学2017年硕士研究生入学考试试题科目代码:910科目名称:数据结构(共5页) 请考生写明题号,将答案全部答在答题纸上,答在试卷上无效 一、单项选择题(本大题共10道小题,每小题2分,共20分) 1.计算机算法指的是()。 A.计算方法B.排序方法C.解决问题的步骤序列D.存储结构 2.链表不具有的特点是()。 A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 3.连续存储设计时,存储单元的地址()。 A.一定连续B.一定不连续 C.不一定连续D.部分连续,部分不连续 4.一个递归算法必须包括()。 A.递归部分 B.终止条件和递归部分 C.迭代部分 D.终止条件和迭代部分 5.栈和队列的共同点是()。 A.都是先进先出 B.都是先进后出 C.只允许在端点处插入和删除元素 D.没有共同点 6.任何一棵二叉树的叶子结点在先序、中序和后序遍历中的相对次序()。 A.不发生改变B.发生改变C.不能确定D.以上都不对 7.由带权为{8,2,5,7}的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()。 A.23B.37C.46D43 8.若从无向图的任意一个顶点出发进行一次深度优先搜索可以访问图中所有的顶点,则该图一定是()图。 A.非连通B.连通C.强连通D.有向 9.适用于折半查找的表的存储方式及元素排列要求为()。 A.链接方式存储,元素无序B.链接方式存储,元素有序 C.顺序方式存储,元素无序D.顺序方式存储,元素有序 10.对n个关键字作快速排序,在最坏情况下,算法的时间复杂度是()。 第1页,共5页

数据结构实验报告全集

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。(3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件

#include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表 nodetype *create()//建立单链表,由用户输入各结点data域之值, //以0表示输入结束

{ elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束

相关文档
相关文档 最新文档