山东大学软件学院2014-2015数据结构真题

合集下载

《数据结构》复习题

《数据结构》复习题

山东大学计算机学院计算机信息管理2006级夜大专科数据结构复习题一、填空题1、数据结构可以定义为一个两元组(D,S),其中 D 是数据元素的有限集,S 是的有限集。

2、在线性表中,线性表的长度指的是。

3、栈中元素的进出原则为 ____________。

4、深度为 k 的二叉树其结点数至多有个。

5、一棵深度为6的满二叉树有______个非终端结点。

6、若一棵二叉树中有8个度为2的结点,则它有_____个叶子。

7、设数组A[1..10,1..8]的基地址为2000,每个元素占2个存储单元,若以行序8、为主序顺序存储,则元素A[4,5]的存储地址为_____;若以列序为主序顺序存储,则元素A[4,5]的存储地址为______。

9、哈希表是一种查找表,可以根据哈希函数直接获得。

10、在单链表中,删除指针 P 所指结点的后继结点的语句是:。

11、有向图 G 用邻接矩阵 A[1..n,1..n] 存储表示,其第 i 行的所有元素之和等于顶点 i 的。

12、在一个单链表p所指结点之后插入一个s所指结点时,应执行s→next=____和p→next=_____的操作。

13、设有33个值,用它们组成一棵哈夫曼树,则该哈夫曼树中共有____个结点。

14、设需将一组数据按升序排序。

在无序区中依次比较相邻两个元素a i和a i+1的值,若a i的值大于a i+1的值,则交换a i和a i+1。

如此反复,直到某一趟中没有记录需要交换为止,该排序方法被称为_________。

15、数据结构在计算机中的表示称为数据的。

16、一棵含999个结点的完全二叉树的深度为_______。

17、广义表的深度是指_______。

18、称算法的时间复杂度为O(f(n)),其含义是指算法的执行时间和_______的数量级相同。

19、在一个长度为n的单链表L中,删除链表中*p的前驱结点的时间复杂度为_________。

20、在队列中,允许插入元素的一端称为_________。

山东大学软件学院软件需求分析与设计复习题答案

山东大学软件学院软件需求分析与设计复习题答案

以下内容是曲文博同学整理提供!在此深表感谢!一、基本概念1.OOA/OOD:面向对象分析方法(Object-Oriented Analysis,OOA),是确定需求或者业务的角度,按照面向对象的思想来分析业务。

是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。

OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。

面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节。

其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。

是一种解决软件问题的设计范式(paradigm),一种抽象的范式。

2.迭代开发:是统一开发过程的关键实践开发被组织成一系列固定的短期小项目每次迭代都产生经过测试、集成并可执行的局部系统每次迭代都具有各自的需求分析、设计、实现和测试随着时间和一次次迭代,系统增量式完善反馈和调整使规格说明和设计不断进化。

如果问到特征,就写下面的,没问就不用写。

迭代式开发特征:1、在进行大规模的投资之前就解决了关键的风险分析。

2、使得早期的用户反馈在初始迭代中就能出现。

3、对各个目标里程碑提供了短期的焦点(阶段性的中心)。

4、对过程的测量是通过对实现的评定(而不仅仅是文档)来进行的。

可以对局部的实现进行部署。

3.UP:UP(Unified Process)是软件工程的过程,是一种指导软件开发活动的方法。

提供了在开发组织中分派任务和责任的纪律化方法。

它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。

统一过程模型是一种“用例驱动,以体系结构为核心,迭代及增量”的软件过程框架,由UML方法和工具支持。

如果问到RUP,就写下面的,没问就不用写。

RUP(Rational Unified Process),是对统一过程的详细细化。

山东大学2015-2016软件测试方法和技术考试原题回忆版

山东大学2015-2016软件测试方法和技术考试原题回忆版

一、名词解释(每题4分)
1.Software Bug
2.验收测试
3.系统测试
4.I18N
5.自动化测试
二、简答题(每题5分)
1.验证和有效性确认的关系
2.简述桩程序和驱动程序
3.简述单元测试能否使用百合测试
4.SQA和软件测试的关系
三、设计题(每题15分)
1.给了一段代码,要求写出判定-条件覆盖,条件组合覆盖
if((x>=-10)&&(x<=10)&&(z==0))
{x=x+100}
else{y=y-100}
if((x=5)||(y<30))
{z=x*y+100}
else{z=25}
2.基本路径,参照书上的4个步骤
3.某软件有年月日,其中要求1=<m<=12,1=<d<=31,1980=<y<=2030,要求用判定表法
给出正确的测试用例
四、综合题(15分)
公司接了某个软件,工期比较紧迫,要求开发部门尽快开发程序,不在乎缺陷多少,有测试部门负责测试。

后客户嫌程序缺陷太多。

开发部门职责测试部门工作不力,测试部门说高质量的软件是开发出来的,不是测试出来的。

就其中的问题发表你的看法。

山东大学网络教育 135#——数据结构 考试试题及参考答案

山东大学网络教育 135#——数据结构 考试试题及参考答案

年级________;层次________;专业________;姓名________复习资料,自我完善,仅供参考,考完上交! 《数据结构》试卷(A 卷)一、选择题1. 数据结构是指(A )。

A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(C )。

A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构 3. 树形结构是数据元素之间存在一种( D )。

A.一对一关系B.多对多关系C.多对一关系D.一对多关系4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为(B )。

for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O(2n )C.O(n)D.O(3n ) 5. 算法分析的目的是(1) C ,算法分析的两个主要方面是(2) A 。

(1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性(2) A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性6. 计算机算法指的是(1) C ,它具备输入,输出和(2) B 等五个特性。

(1) A.计算方法 B.排序方法C.解决问题的有限运算序列D.调度方法(2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性C.确定性,有穷性和稳定性D.易读性,稳定性和安全性7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要( B )。

A.低B.高C.相同D.不好说。

2015年数据结构期末考试题及答案,推荐文档(2021年整理)

2015年数据结构期末考试题及答案,推荐文档(2021年整理)

2015年数据结构期末考试题及答案,推荐文档(word版可编辑修改) 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(2015年数据结构期末考试题及答案,推荐文档(word版可编辑修改))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为2015年数据结构期末考试题及答案,推荐文档(word版可编辑修改)的全部内容。

2012年数据结构期末考试题及答案一、选择题1.在数据结构中,从逻辑上可以把数据结构分为 C 。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构2.数据结构在计算机内存中的表示是指 A 。

A.数据的存储结构B.数据结构C.数据的逻辑结构 D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。

A.逻辑B.存储C.逻辑和存储D.物理4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C .A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑 A 。

A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便.6.以下说法正确的是 D 。

A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是 C ,算法分析的两个主要方面是 A .(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进 C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是O(n2) 。

(精选)山大网络《数据结构》试卷( A 卷)

(精选)山大网络《数据结构》试卷( A 卷)

《数据结构》试卷(A卷)一、选择题1. 数据结构是指( A )。

A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(C )。

A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构3. 树形结构是数据元素之间存在一种( D )。

A.一对一关系B.多对多关系C.多对一关系D.一对多关系4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为( B )。

for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O(2n) C.O(n) D.O(3n)5. 算法分析的目的是(1C),算法分析的两个主要方面是(2A)。

(1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性(2) A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性6. 计算机算法指的是(1C),它具备输入,输出和(2B)等五个特性。

(1) A.计算方法 B.排序方法C.解决问题的有限运算序列D.调度方法(2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性C.确定性,有穷性和稳定性D.易读性,稳定性和安全性7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要( B )。

A.低B.高C.相同D.不好说8. 数据结构作为一门独立的课程出现是在( D )年。

A.1946B.1953C.1964D.19689. 数据结构只是研究数据的逻辑结构和物理结构,这种观点(B )。

A.正确B.错误C.前半句对,后半句错D.前半句错,后半句对10. 计算机内部数据处理的基本单位是(B )。

A.数据B.数据元素C.数据项D.数据库11. 若查找每个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为( D )。

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

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

第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。

【北京邮电大学2000二、3(20/8分)】A.效率 B.复杂性 C.现实性 D.难度2. 算法的时间复杂度取决于()【中科院计算所1998二、1(2分)】A.问题的规模 B.待处理数据的初态 C. A 和 B3.计算机算法指的是( 1),它必须具备( 2)这三个特性。

(1) A.计算方法 B.排序方法 C.解决问题的步骤序列 D.调度方法(2) A .可执行性、可移植性、可扩充性 B.可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D.易读性、稳定性、安全性【南京理工大学1999一、1(2分)【武汉交通科技大学1996一、1( 4 分)】4.一个算法应该是()。

【中山大学1998二、1(2分)】A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A 和 C.5. 下面关于算法说法错误的是()【南京理工大学2000一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学2000一、 2( 1.5分)】(1 )算法原地工作的含义是指不需要任何额外的辅助空间( 2)在相同的规模n 下,复杂度 O(n) 的算法在时间上总是优于复杂度nO(2 ) 的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A. (1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。

【武汉交通科技大学1996 一、4( 2 分)】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。

【北方交通大学2000二、 1(2分)】A.循环队列 B.链表 C.哈希表 D.栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学2001一、 1(2分)】A.广义表 B.二叉树 C.稀疏矩阵 D.串10.以下那一个术语与数据的存储结构无关?()【北方交通大学2001一、 2(2 分)】A .栈 B.哈希表 C.线索树 D.双向链表11.在下面的程序段中,对 x 的赋值语句的频度为()【北京工商大学2001一、10( 3 分)】FOR i:=1TOn DOFOR j:=1TOn DOx:=x+1;A. O(2n)B. O(n)C. O(n2)D. O(logn 2 )12.程序段FOR i:=n-1DOWNTO1DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与 A[j+1]对换;其中 n 为正整数,则最后一行的语句频度在最坏情况下是()A. O ( n)B. O(nlogn)C. O(n 3)D. O(n 2)【南京理工大学 1998 一、 1(2 分 ) 】13.以下哪个数据结构不是多型数据类型()【中山大学1999一、 3( 1 分)】A.栈B.广义表C.有向图D.字符串14.以下数据结构中,()是非线性数据结构【中山大学1999一、 4】A.树B.字符串C.队D.栈15.下列数据中,()是非线性数据结构。

数据结构习题及答案-第1章 绪论

数据结构习题及答案-第1章 绪论

第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。

【北京邮电大学2000 二、3 (20/8分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()【中科院计算所 1998 二、1 (2分)】A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。

(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学 1999 一、1(2分)【武汉交通科技大学 1996 一、1( 4分)】4.一个算法应该是()。

【中山大学 1998 二、1(2分)】A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.5. 下面关于算法说法错误的是()【南京理工大学 2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学 2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。

【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。

【北方交通大学 2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学 2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()【北方交通大学 2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()【北京工商大学 2001 一、10(3分)】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)12.程序段 FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2) 【南京理工大学1998一、1(2分)】13.以下哪个数据结构不是多型数据类型()【中山大学 1999 一、3(1分)】A.栈 B.广义表 C.有向图 D.字符串14.以下数据结构中,()是非线性数据结构【中山大学 1999 一、4】A.树 B.字符串 C.队 D.栈15. 下列数据中,()是非线性数据结构。

山东大学数据结构实验报告四

山东大学数据结构实验报告四

山东大学软件工程学院数据结构课程实验报告学号:姓名:班级:软件工程2014级2班实验题目:矩阵和散列表实验学时:实验日期: 2015.11.11实验目的:掌握特殊矩阵和稀疏矩阵。

掌握散列表及其应用。

硬件环境:实验室软件环境:Vistual Studio 2013实验步骤与内容:实验内容:1、创建三对角矩阵类,采用按列映射方式,提供store和retrieve 方法。

2、创建下三角矩阵类,采用按列映射方式,提供store和retrieve 方法。

3、创建稀疏矩阵类,采用行主顺序把稀疏矩阵映射到一维数组中,实现稀疏矩阵的转置和两个稀疏矩阵的加法操作。

4、使用散列表设计实现一个字典,假设关键字为整数且D为961,在字典中插入随机产生的500个不同的整数,实现字典的建立和搜索操作。

分别使用线性开型寻址和链表散列解决溢出。

代码体:ChainHashTableNode.h#pragma once#include"ChainHashTableNode.h"using namespace std;class ChainHashTable{public:ChainHashTable(int divisor);~ChainHashTable();bool Insert(int k);bool Search(int k);void print();private:int d;ChainHashTableNode *ht;};ChainHashTableNode.cpp#include"ChainHashTable.h"#include<iostream>using namespace std;ChainHashTable::ChainHashTable(int divisor) {d = divisor;ht = new ChainHashTableNode[d];}bool ChainHashTable::Insert(int k){int j = k%d;if (ht[j].Insert(k)){return true;}else{return false;}}void ChainHashTable::print(){for (int i = 0; i < d; i++){ht[i].print();}}ChainHashTableNode.h#pragma once#include"Node.h"class ChainHashTableNode{public:ChainHashTableNode();bool Insert(int k);bool Search(int k);void print();private:Node *first;};ChainHashTableNode.cpp#include"ChainHashTableNode.h"#include<iostream>using namespace std; ChainHashTableNode::ChainHashTableNode() {first = 0;}bool ChainHashTableNode::Search(int k) {if (first == 0) return false;Node *current = first;while (current){if (current->value == k){return true;}current = current->link;if (current){if (current->value == k){return true;}}}return false;}bool ChainHashTableNode::Insert(int k) {if (Search(k)){cout << "已经存在此元素" << endl;return false;}else {Node *p = new Node();p->value = k;if (first == 0){first = p;return true;}else{p->link = first;first = p;return true;}}}void ChainHashTableNode::print(){Node *current = first;if (first){while (first){cout << first->value << " ";first = first->link;}cout << endl;first = current;}else {cout << -1 << endl;}}HashTable.h#pragma onceclass HashTable{public:HashTable(int divisor);~HashTable();int Search(int k);//搜索算法bool Insert(int e);void print();private:int hSearch(int k);int d;//除数int *ht;//桶,大小取决于d就是除数是多少bool *empty;//一维数组,用来存储第I个桶是否存入了元素};HashTable.cpp#include"HashTable.h"#include<iostream>using namespace std;HashTable::HashTable(int divisor){d = divisor;ht = new int[d];empty = new bool[d];for (int i = 0; i < d; i++){empty[i] = true;ht[i] = 0;}}HashTable::~HashTable(){delete[]ht;delete[]empty;}int HashTable::hSearch(int k)//搜索值为K的元素{int i = k%d;int j = i;do{if (ht[j] == k || empty[j]) return j;j = (j + 1) % d;} while (j != i);return j;}int HashTable::Search(int k)//搜索值为K的元素{int b = hSearch(k);if (ht[b] == k) return b;return -1;}bool HashTable::Insert(int e){int b = hSearch(e);if (empty[b]){ht[b] = e;empty[b] = false;return true;}else if (ht[b] == e){cout << "已经存在此元素" << endl;return false;}else{cout << "表已经满了" << endl;return false;}}void HashTable::print(){for (int i = 0; i < 961; i++){cout << ht[i] << " ";}cout << endl;return;}LowerTriangularMatrix.h#pragma onceclass LowerTriangularMatrix{public:LowerTriangularMatrix(int size);void Store(int x, int i, int j);//向矩阵里存储一个元素int Retrieve(int i, int j);//返回矩阵中的一个元素void print();private:int n;//矩阵维数int sum;//矩阵非零元素个数int *t;//用数组来存储矩阵};LowerTriangularMatrix.cpp#include"LowerTriangularMatrix.h"#include<iostream>using namespace std;LowerTriangularMatrix::LowerTriangularMatrix(int size){n = size;sum = n*(n + 1) / 2;t = new int[sum];}void LowerTriangularMatrix::Store(int x, int i, int j){if (i<0 || j<0 || i >= n || j >= n){cout << "下三角矩阵行列输入错误" << i << " " << j << endl;return;}else if (x == 0){cout << "下三角所添加的元素必须非零" << endl;return;}else if (i<j){cout << "下三角添加元素位置错误" << endl;return;}t[sum - ((n - j)*(n - j + 1) / 2) + (i - j)] = x;return;}int LowerTriangularMatrix::Retrieve(int i, int j){if (i<0 || j<0 || i >= (n - 1) || j >= (n - 1)){cout << "三对角矩阵行列输入错误" << endl;return -1;}else if (i >= j){return t[sum - ((n - j)*(n - j + 1) / 2) + (i - j)];}else{return 0;}}void LowerTriangularMatrix::print(){for (int i = 0; i < sum; i++){cout << t[i] << " ";}cout << endl;return;}Node.h#pragma onceclass Node{friend class ChainHashTableNode;private:int value;Node *link;};Node.cpp#include"Node.h"using namespace std;SparseMatrix.h#pragma once#include"Term.h"class SparseMatrix{public:SparseMatrix(int row, int col);void transpose();void Store(int x, int i, int j);//向矩阵里存储一个元素void Add(SparseMatrix &b);//两个稀疏矩阵相加void print();private:int row, col;//数组维数int sum;//元素个数int maxsum;//最多的元素个数Term *t;//存储的数组};SparseMatrix.cpp#include"SparseMatrix.h"#include<iostream>using namespace std;SparseMatrix::SparseMatrix(int r, int c){row = r;col = c;sum = 0;maxsum = r*c;t = new Term[maxsum];}void SparseMatrix::transpose(){Term *cur = new Term[maxsum];int *ColSize = new int[col];int *RowNext = new int[row];for (int i = 0; i < col; i++) ColSize[i] = 0;for (int i = 0; i < row; i++) RowNext[i] = 0;for (int i = 0; i < sum; i++) ColSize[t[i].col]++;//表示每一列的非零元素个数RowNext[0] = 0;for (int i = 1; i < col; i++) RowNext[i] = RowNext[i - 1] + ColSize[i - 1];//表示新矩阵中每一行的矩阵的前面的矩阵的个数//进入转置操作for (int i = 0; i < sum; i++){int j = RowNext[t[i].col]++;cur[j].value = t[i].value;cur[j].col = t[i].row;cur[j].row = t[i].col;}delete t;t = cur;}void SparseMatrix::Store(int x, int i, int j){t[sum].value = x;t[sum].row = i;t[sum].col = j;sum++;return;}void SparseMatrix::print(){for (int i = 0; i < sum; i++){cout << t[i].value << " ";}cout << endl;return;}void SparseMatrix::Add(SparseMatrix &b)//两个稀疏矩阵相加{if (col != b.col || row != b.row){cout << "两个矩阵行列不同无法相加" << endl;return;}int sa = 0;int sb = 0;Term *cur = new Term[maxsum];int k = 0;while (sa < sum || sb < b.sum){if (t[sa].col == b.t[sb].col&&t[sa].row == b.t[sb].row){cur[k].col = t[sa].col;cur[k].row = t[sa].row;cur[k].value = t[sa].value + b.t[sb].value;k++;sa++;sb++;}else if (t[sa].row < b.t[sb].row){cur[k].value = t[sa].value;cur[k].row = t[sa].row;cur[k].col = t[sa].col;k++;sa++;}else if (t[sa].row > b.t[sb].row){cur[k].value = b.t[sb].value;cur[k].row = b.t[sb].row;cur[k].col = b.t[sb].col;k++;sb++;}else if (t[sa].col < t[sb].col){cur[k].col = t[sa].col;cur[k].row = t[sa].row;cur[k].value = t[sa].value;k++;sa++;}else{cur[k].value = b.t[sb].value;cur[k].row = b.t[sb].row;cur[k].col = b.t[sb].col;k++;sb++;}}sum = k;delete t;t = cur;return;}Term.h#pragma onceclass Term{friend class SparseMatrix;private:int col, row;int value;};Term.cpp#include"Term.h"TridiagonalMatrix.h#pragma onceclass TridiagonalMatrix{public:TridiagonalMatrix(int size);void Store(int x, int i, int j);//向矩阵里存储一个元素int Retrieve(int i, int j);//返回矩阵中的一个元素void print();private:int n;//矩阵非0元素个数int *t;//用数组来存储矩阵};TridiagonalMatrix.cpp#include"TridiagonalMatrix.h"#include<iostream>using namespace std;TridiagonalMatrix::TridiagonalMatrix(int size){n = size;t = new int[3 * n - 2];}void TridiagonalMatrix::Store(int x, int i, int j){if (i<0 || j<0 || i >= n || j >= n){cout << "三对角矩阵行列输入错误" << i << " " << j << endl;return;}else if (x == 0){cout << "三对角矩阵所添加的元素必须非零" << endl;return;}else if (abs(i - j)>1){cout << "三对角矩阵添加元素位置错误" << endl;return;}switch (i - j){case -1:t[3 * j - 1] = x;break;case 0:t[3 * j] = x;break;case 1:t[3 * j + 1] = x;break;}return;int TridiagonalMatrix::Retrieve(int i, int j){if (i<0 || j<0 || i >= (n - 1) || j >= (n - 1)) {cout << "三对角矩阵行列输入错误" << endl;return -1;}else if (abs(i - j) <= 1){return t[3 * j + (i - j)];}else{return 0;}}void TridiagonalMatrix::print(){for (int i = 0; i < 3 * n - 2; i++){cout << t[i] << " ";}cout << endl;return;}Test.cpp#include<iostream>#include<cstring>#include<cstdlib>#include"TridiagonalMatrix.h"#include"LowerTriangularMatrix.h"#include"SparseMatrix.h"#include"HashTable.h"#include"ChainHashTable.h"using namespace std;int wei, num[100][100];void c(){for (int i = 0; i < wei; i++)for (int j = 0; j < wei; j++)cin >> num[i][j];}int main(){int k = 0, l = 0;/*三对角矩阵实验开始测试数据4~10~3n-241 2 0 03 4 5 00 7 8 90 0 8 7*/cout << "请输入三对焦矩阵维数及内容:" << endl;cin >> wei;c();TridiagonalMatrix *TM = new TridiagonalMatrix(wei);for (int i = 0; i < wei; i++)for (int j = 0; j < wei; j++)if (num[j][i] != 0)TM->Store(num[j][i], j, i);TM->print();cout << "请输入要查询的元素的位置" << endl;cin >> k >> l;l = TM->Retrieve(k, l);cout << "查询结果:" << l << endl;cout << "***********************************************" << endl;/*下三角矩阵实验开始测试数据4~10~n*(n+1)/241 0 0 02 3 0 04 5 6 07 8 9 -1*/cout << "请输入下三角矩阵维数及内容:" << endl;k = 0, l = 0;cin >> wei;c();LowerTriangularMatrix *LTM = new LowerTriangularMatrix(wei);for (int i = 0; i < wei; i++)for (int j = 0; j < wei; j++)if (num[j][i] != 0)LTM->Store(num[j][i], j, i);cout << "请输入要查询的元素的位置" << endl;cin >> k >> l;l = LTM->Retrieve(k, l);cout << "查询结果:" << l << endl;cout << "***********************************************" << endl;/*稀疏角矩阵实验开始测试数据4 54 51 0 0 0 20 3 0 0 04 0 05 00 6 7 0 84 58 0 7 6 00 5 0 0 40 0 0 3 02 0 0 0 19 0 7 6 20 8 0 0 44 0 0 8 02 6 7 0 9*/cout << "请输入稀疏矩阵的维数及内容:" << endl;cin >> k >> l;SparseMatrix *SM = new SparseMatrix(k, l);for (int i = 0; i < k; i++)for (int j = 0; j < l; j++){cin >> num[i][j];if (num[i][j])SM->Store(num[i][j], i, j);}cout << "稀疏矩阵为: ";SM->print();SM->transpose();cout << "转置后稀疏矩阵为: ";SM->print();SM->transpose();cout << "重新转置后稀疏矩阵为: ";cout << "矩阵相加开始,请输入要使用的矩阵维数及内容:" << endl;cin >> k >> l;SparseMatrix *SM2 = new SparseMatrix(k, l);for (int i = 0; i < k; i++)for (int j = 0; j < l; j++){cin >> num[i][j];if (num[i][j])SM2->Store(num[i][j], i, j);}cout << "新矩阵为: ";SM2->print();SM->Add(*SM2);cout << "矩阵相加后为: ";SM->print();cout << "***********************************************" << endl;cin.get();system("pause");/*使用散列表设计实现一个字典,假设关键字为整数且D为961,在字典中插入随机产生的500个不同的整数,实现字典的建立和搜索操作。

2015年山东烟台大学数据结构考研真题

2015年山东烟台大学数据结构考研真题

2015年山东烟台大学数据结构考研真题一、选择题(本大题共25小题,每小题2分,共50分)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.在下面的程序段中,对x的赋值语句的频度为()for(k=1;k<n;k++)for(j=1;j<n;j++)x=x+1;A.0(2n)B.0(n)C.0(n)D.0(logen)7.以下哪个数据结构是多型数据类型结构()A.栈B.广义表C.数组D.字符串8.顺存储设计时,存储单元的地址()。

A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续9.假设I和0分别表示进栈和出栈操作,栈的初始状态为空,下面所示的I/0序列中()是合法的?A.IOIOII00B.IeC.III0000ID.III0000I010.串是一种特殊的线性表,其特殊形表现在()A.可以顺序存储B.数据元素是单个字符C.可以连接存储D.数据元素类型相同11.可以用()定义一个完整的数据结构。

A.数据元素B.数据对象C.数据关系D.抽象数据类型12.有关图中路径的定义,表述正确的是(A.路径是顶点和相邻顶点偶对构成的边所形成的序列B.路径是图中相邻顶点的序列C.路径是不同边所形成的序列D.路径是不同顶点和不同边所形成的集合13.已知有向图G=(V,E),其中V=(V1,V2,V3,V4,V5,V6,V7),E=(<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5><V3,V5>,<V3,V6>,<V4,V6>,<V5,V7>,,<V6,V7>},则图G的拓扑序列是()A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V4,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V714.设单链表中指针p指向结点A,若要删除A的直接后继,则所需修改指针的操作为(A.p->next=p->next->nextB.p=p->nextC.p=p->next->nextD.p->next=p15.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是()A.堆排序B.直接插入排序C.冒泡排序D.快速排序16.数据表A中每个元素距其最终位置较近,则最省时间的排序算法是( A.插入排序B.堆排序C.直接选择排序D.快速排序17.适合于磁带存储的文件是()A.散列文件B.索引文件C.顺序文件D.多关键字文件18.一棵二叉树的中根遍历序列为debac,后根遍历序列为dabec,,则先根遍历序列为()A.acbedB.cedbaC.deabcD.becab19.在一个有向图中,所有顶点的度数之和与图的边数的比是()A.1:2B.1:1C.2:1D.4:120.含有n个结点的二叉树用二叉链表表示时,空指针域个数为()A.n-1B.n D.n+221.对n个不同值进行冒泡排序,在元素无序的情况下比较的次数为()A.n*(n-1)/2B.nC.n+1D.n122.对称矩阵A[N]N],A[1][1]为首元素,将下三角(包括对角线)元素以行优先顺序存储到一维数组元素T[1]至T[N(N+1)/2]中,则任一下三角元素A[i][j]存于T[k]中,下标k为()A.i*(i-1)/2+jB.jG-1)/2+1C.i(j-i)/2+1D.j(-1)/2+123.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址adr开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。

2015年山东省数据结构试题及答案考资料

2015年山东省数据结构试题及答案考资料

24、在数据结构中,与所使用的计算机无关的是数据的 A 结构。
A.逻辑 B.存储 C.逻辑和存储 D.物理
25、如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 B 。
A.只有表头指针没有表尾指针的循环单链表
A.{25,51,66,82,98,108}
B.{25,51,66,98,82,108}
C.{51,25,66,108,98,82}
D.{51,25,66,82,98,108}
20、通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 B 。
A.数据元素具有同一特点
18、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是 B 。
A.O(1) B.O(n) C.O(n2) D.O(nlog2n)
19、已知关键字序列为{66,82,25,51,98,108},利用快速排序方法,以第一个元素为基准得到的一趟排序结果为
A.SA+141 B.SA+144 C.SA+222 D.SA+255
11、如果最常用的操作是取第i个结点及其前驱,则采用 D 存储方式最节省时间。
A.单链表 B.双链表 C.单循环链表 D. 顺序表
12、在数据结构中,与所使用的计算机无关的是数据的 A 结构。
1、G是一个非连通无向图,共28条边,则该图至少有( )个顶点
A 6 B 7 C 8 D 9
2、在以下的叙述中,正确的是 B 。
A.线性表的顺序存储结构优于链表存储结构
B.二维数组是其数据元素为线性表的线性表
A.数据的处理方法 B.数据元素的类型

山大软件工程试卷05答案

山大软件工程试卷05答案

一.解释下列名词的含义1.过程:软件开发活动中产生某种期望结果的一系列有序任务,涉及活动、约束和资源2.迭代式开发:在需求中,系统初次提交时是一个完整的系统功能框架,后续版本是对原先版本功能的改变或增强。

3.开发模式:软件开发全部过程、活动和任务的结构框架,能直观表达软件开发全过程,明确规定需要完成的重要活动,任务和开发策略,是软件开发方法的策略或哲学。

4.项目进度:是对特定项目的软件开发周期的刻画。

是通过对项目阶段、步骤、活动的分解而得到的。

5.抛弃型原型:仅用于了解问题、探索可行性,并不打算用来作为将来实际提交系统的一部分,而是用完扔掉。

6.耦合:软件模块之间的相互依赖性7.用例:通过建立用户、外部项、其他实体的对话模型,而对系统将要完成的功能进行描述或刻画。

8. 能力缺陷:当系统的活动达到设定的极限(例如设备数量)时,系统性能变得不可接受。

9. 容量测试:验证系统处理巨量数据的能力(检验数据结构是否足够大,以能够处理各种情况)。

10.软件可靠性:软件系统在给定的时间间隔和给定条件下运行成功的概率。

二.判断1.x2. √3. x4. x5. x6. x7.√8. √9. x 10. x三.填空1.文档2.软件过程3.问题定义,《SRS》草稿,可行性研究,正式的《SRS》文档4.驱动模块,桩模块5.维护6.单继承,多重继承7.矩形,圆圈,单箭头,双横线8.alpha测试,beta测试9.算法缺陷,计算和精度缺陷,过载缺陷/能力缺陷10.强度测试,容量测试,配置测试/兼容性测试11.作为一种部分开发的产品,用来让用户和开发者共同研究,提出意见,为最终产品定型四.选择1.D. 2. C 3. C 4.B 5. B 6. B 7. B8 [A] 2 [B] 4 [C] 1 [D] 4 [E] 4五.简述题1.错误是人为造成的错误,缺陷是程序功能中出现的问题,失败是软件运行时出现的故障。

一个错误可能导致若干个缺陷,但缺陷不一定导致失败2.需求分析(项目计划,可行性研究报告,SRS”需求规格说明)、系统设计(软件结构图等)、程序设计(算法和数据描述文档)、编码(源程序及注释)、单元测试(测试报告)、集成测试(测试报告)、系统测试(测试报告)、系统提交(用户手册等),维护(维护报告)3.要点:软件产品的质量,软件过程的质量,软件的商业价值4.必须满足的用户需求,用户热切希望但不是必须的需求,技术上有可能实现但必须去掉的需求5.影响软件工程开发实践发生变化的关键要素是:①.商业产品推向市场的时间的重要性②.计算经济学的改变(计算行业经济的发展趋势:硬件费用越来越低,而开发、维护费用越来越高)③.功能强大的桌面计算平台的出现④.局域网和广域网的延伸⑤.面向对象技术的出现及其应用⑥.使用窗口、图标、菜单和指针的图形用户界面⑦.软件开发瀑布模型的不可预知性(时间、费用的不可预知性)6.偶然性内聚:各部分功能上互不相关逻辑性内聚:模块各部分功能相似时间性内聚:模块各部分要求在同一时间完成过程性内聚:各部分有一定次序通讯性内聚:各部分访问共享数据顺序性内聚:各部分之间有输入输出关系功能性内聚:模块各部分合起来完成一个单一的功能。

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

1.二分搜索一个14个数的数组,查找A[4]所经过的元素有____.
2.一个序列先入栈,再出栈,出栈元素加入队列,生成一个新的顺序(已给出),则栈结构最少需要能保存几个元素_______.
3.一个5000个元素的数据需要排序,在堆排序,基数排序,快速排序里,要求速度最快,选哪一个______.
4.n个结点的m序B树,有____个外部节点。

一个5序B树有53个结点,该B树至少有___ 层。

5.已给出一个K=11的散列表已有三个元素,再插入两个元素,则这两个元素的位置是________.
6.已给出一个无序数组,选第一个元素作为基点,快排一趟之后的顺序为____________________.
7.一个图已给3条边,再添加一条边,使其有唯一的拓扑序列,添加的边是_______,拓扑序列为____________.
8已给出一个序列,初始化为最小堆____________________。

1.跳表和散列,分别搜索最小元素写出思想和时间复杂度。

2.已给出一个序列,写出建立A VL树的过程,及删除某一个元素后的结果。

3.已给出一个有向图,写出对应的邻接表,根据Dijkstra算法写出某个顶点到其余各顶点的最短路径。

4.已给出一颗公式化描述的二叉树,画出二叉树并写出前中后序列及转化成森林。

5.无向图用公式化描述,为简化,用数组M表示上三角矩阵。

写出A[i,j]到M的映射关系,说明如何求任意顶点i的度。

6.6个有序的序列,20 30 40 60 70 100 通过5次两两合并,生成一个有序的序列,求最少次数的合并过程。

1.删除链表形式的二叉搜索树的最大元素,写出思想,算法实现,时间复杂度。

2.邻接链表表示的图写出算法判断是否存在V->U的路径,以及思想。

相关文档
最新文档