文档库 最新最全的文档下载
当前位置:文档库 › 数据结构作业

数据结构作业

数据结构作业
数据结构作业

作业1

1.编写递归函数计算Fibonacci数列,能避免重复计算

输入:input.txt,仅包含一个整数n(0-90)

输出:程序应能检查输入合法性,若有错误,输出错误提示“WRONG”;否则输出F(n)。两种情况都输出一个回车(形成一个空行)。所有实例均应在30秒内输出结果。

提示:可用一数组保存Fibonacci数列,用一个特殊值表示还未计算出Fibonacci数,递归调用前先检查数组,若已计算,直接取用,不进行递归调用;若未计算,调用递归函数,计算完成后保存入数组。实际上,这种方法得到了F(1)-F(n),而不仅是F(n)。

另外,注意数据类型取值范围问题。VC 6.0中,长整型为LONGLONG,而其输出用%I64d。

2.(教材习题5)编写递归函数,求n个元素集合的所有子集。不妨令集合元素为小写字母,原集合为{‘a’, ‘b’, …, ‘a’ + n - 1}。

输入:input.txt,仅包含整数n(1-26)。

输出:若输入合法,输出集合的所有子集;否则输出“WRONG”。子集输出格式为每行一个子集,空集用空行表示,非空集合每个元素间用一个空格间隔,最后一个元素之后不能有空格。例如,对n=3,可能的输出为:

―――――――――――

a

a b

a b c

a c

b

b c

c

――――――――――――-

提示:递归函数一般设计思路是将问题求解分为若干阶段,每个阶段有多种选择,则每个阶段尝试各种选择就构成函数主体,而“进入下一阶段”则用递归调用完成。对本问题,子集中包含元素的选择可作为“阶段”,而每个元素“是否在子集中”可作为“每个阶段的多种选择”。有个地方需要一些技巧:在何时安排输出,可达到要求的顺序?

常用技巧:集合用什么样的数据结构保存、处理

一般高级程序设计语言都不提供“集合”数据类型,因为集合大小不固定,且进行运算大小变化可能很剧烈。一般思路是用数组或链表(线性表)来保存集合,数组元素(链表节点)对应集合元素,集合运算的效率较差,可能会频繁改变数组、链表大小。

但如果可能的集合元素是有限个,如本题,有一种较好的方法,仍然可用数组,但数组元素不是保存集合元素,而是每个数组元素固定对应一个可能的集合元素,数组元素类型是布尔值(t/f,0/1),表示对应元素是否包含在本集合内,显然本题用此方法很适合。还可进一步优化,由于每个数组元素值只可能是0/1,因此无需占用一个整型字,占用一位即可,这种

“位表示法”的另一好处是将集合的操作转换为二进制位运算,效率非常高。比如,对本题,1101可能就表示{a, c, d}(a-最低位),那么{a, d, e, f}的位表示是什么?两个集合的并集用两个二进制数的什么运算即可完成?交集呢?如果使用这种方法,无需递归即可得到所有子集,当然,按题目要求,大家还应该设计递归函数。

数据结构大作业含源代码

数据结构大作业 作业题目:职工信息管理系统 姓名: 学号: 班级: 指导教师: 日期:

一、主要功能: 这个职工信息管理系统是由C语言编写的程序,它用起来很方便又很灵活。它由输入职工信息,输出职工信息,按职工号,部门号,工资排序,按职工号,部门号,工资来输出职工的所有信息。删除有关职工的所有信息,保存职工的所有信息并退出等11个模块儿组成。 二、实验环境:C语言、C++、C# 等等。 三、功能说明: 下面按步骤来介绍一下,职工信息管理系统的基本操作。 这是运行程序以后出现的主界面。如图(1)所示: 图(1)主界面 1.输入职工的信息 该模块儿的功能是分别输入职工的姓名,职工号,部门号,工资等信息。每次输入职工的所有信息以后,界面上会显示出《输入完成!》的命令。如图(2)所示:

图(2)输入职工信息 2.输出所有的职工信息 该模块儿的功能是显示出有关职工的所有信息。操作如图(3)所示: 图(3)输出所有的职工信息 3.按职工号排序 该模块儿的功能是按职工号排序所有的职工。我们按3的时候,界面上会显示出《排序完成!》的命令。如图(4)所示:

图(4)按职工号排序 4.输出所有的职工号码 该模块儿的功能是显示出已排序好的所有职工的号码。操作如图(5)所示: 图(5)输出所有的职工号 5.按部门号排序 该模块儿的功能是按部门号排序所有职工的部门号。我们按5的时候,界面上会显示出《排序完成!》的命令。如图(6)所示:

图(6)按部门号排序 6.输出所有的部门号 该模块儿的功能是显示出已排序好的所有部门号。操作如图(7)所示: 图(7)输出所有的部门号 7.按职工的工资排序 该模块儿的功能是按工资排序所有职工的工资。我们按7的时候,界面上会显示出《排序完成!》的命令。如图(8)所示:

数据结构作业系统第七章答案

7.22③试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。注意:算法中涉及的图的基本操作必须在此存储结构上实现。 实现下列函数: Status DfsReachable(ALGraph g, int i, int j); /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ 图的邻接表以及相关类型和辅助变量定义如下:Status visited[MAX_VERTEX_NUM]; typedef char VertexType; typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; } ArcNode; typedef struct VNode { V ertexType data; ArcNode *firstarc; } VNode, AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum, arcnum; } ALGraph; Status DfsReachable(ALGraph g, int i, int j) /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ { int k; ArcNode *p; visited[i]=1; for(p=g.vertices[i].firstarc;p;p=p->nextarc) { if(p) { k=p->adjvex; if(k==j)return 1; if(visited[k]!=1)

数据结构大作业

浙江大学城市学院实验报告 课程名称数据结构基础 实验项目名称实验九栈的应用 学生姓名丁汀专业班级信管1006 学号31001444 实验成绩指导老师(签名)日期 一.实验目的和要求 1、学会通过对问题的分析,设计一种合理的数据结构,并进行定义及操作的实现。 2、掌握利用栈各种操作来进行具体的实际应用。 3、加强综合程序的分析、设计能力。 二.实验内容 1、共享栈的设置,问题描述如下: 在一个数组空间stack[MaxSize]中可以同时存放两个顺序栈,栈底分别处在数组的两端,当第1个栈的栈顶指针top1等于-1时则栈1为空,当第2个栈的栈顶指针top2等于MaxSize时则栈2为空。两个栈均向中间增长,当有元素向栈1进栈时,使top1增1得到新的栈顶位置,当有元素向栈2进栈时,使top2减1得到新的栈顶位置。当top1==top2-1或top1+1==top2时,存储空间用完,无法再向任一栈做进栈操作,此时可考虑给出错误信息并停止运行。 要求: ⑴给出共享栈的顺序存储类型定义。 ⑵给出共享栈的抽象数据类型定义。 ⑶建立头文件test9_stack.h,包含共享栈的基本操作实现函数;建立主程序文件test9.cpp,在主函数中对共享栈的各个操作进行测试。 2、利用上述共享栈,实现火车车厢的调度模拟 设火车车厢分为三类:硬座、硬卧、软卧,分别用A、B、C表示。下图描述车厢调度的示意图,图中右端为排列无序的车厢,左端为调度后的车厢排列,使得所有软卧车厢在最前面、所有硬卧车厢在中间、所有硬座车厢在最后。 编程模拟上述车厢调度过程。 提示:两个辅助铁轨相当于两个栈,右端车厢进入用相应字符串给出,如“BBACBCAABBCAA”,左端车厢的用新生成的字符串给出。在test9_stack.h 给出模拟函数,并在主函数中进行调用测试。

数据结构作业

作业1.线性表 (1) 在有序单链表中设计一高效算法删除所有值大于mink 且小于maxk 的元 素;思考题:你能将上述算法改为双向循环链表吗? (2) 将带表头结点的单链表就地逆置 (3) 将顺序表逆置,要求用最少的附加空间 (4) 在有序顺序表中插入x ,插入后仍为有序的。 作业2. 栈、队列、数组 1.若进栈序列为abcd ,请给出全部可能的出栈序列和不可能的出栈序列。 2.循环队列如何判断队满和队空? 3.写出下面稀疏矩阵的三元组顺序表和十字链表表示。 4.设A 为n 阶对称阵,采用压缩存储存放于一维数组F[n(n+1)/2]中(从F[0] 开始存放),请分别给出存放上三角阵时任一矩阵元素aij (1≤i,j ≤n )的地址 计算公式和存放下三角阵时任一矩阵元素aij (1≤i,j ≤n )的地址计算公式。 作业3.树与二叉树 一、问答题 1、请分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。 2、已知二叉树的先序遍历序列是EABDCFHGIKJ ,中序遍历序列是 ABCDEFGHIJK ,请构造二叉树,并写出其层次遍历序列和后序遍历序列。 3、将图1所示的森林转换成一棵二叉树。 A B C D G H I J K E F L 图1 4、将如图2所示的二叉树还原成树或森林 400000503008000000000700200000A ?????? ??=????????

A B C D G H I J K E F L L L 图2 5、假设用于通信的电文由7个字母组成,字母在电文中出现的频率分别为 0.17、0.09、0.12、0.06、0.32、0.03、0.21。试为这7个字母设计哈夫曼编码,并计算其带权路径长度。 二、二叉树采用二叉链表存储,试设计算法实现: (1)设计递归算法实现二叉树中所有结点的左右孩子交换。 (2)统计以值为X 的结点为根的子树中叶子结点的数目。 (3)设计算法求二叉树的高 作业4 图 一、简答题: 1. 已知带权无向图如图所示: (1). 根据普里姆(Prim )算法,求它的从顶点a 出发的最小生成树(写出过程,即添加顶点、边次序); (2). 根据克鲁斯卡尔(Kruskal )算法,求该图的最小生成树(写出过程,即添加边次序)。 2.已知带权有向图如图所示: (1). 画出该图的邻接矩阵存储结构; (2). 请写出该图的一个拓扑有序序列; (3). 求从顶点a 到其余各顶点之间的最短路经及最短路经长度,并给出计算过程。 二、编程题: 用类C 语言设计算法判断有向图中是否存在由顶点v s 到v t 的路径(t s ),要求说明有向图的存储方式。 作业5 查找与排序 一、简答题: 1. 设有关键字序列{25,40,33,47,12,66,72,87,94,22,5,58},散列 表长12,散列函数为h(key)=key%11,用线性探查再散列、链地址法处理冲突,请分别画出散列表,并计算在等概率情况下的查找成功的平均查找长度。

数据结构大作业报告

数据结构大作业报告 数据结构大作业实验报告课程名称:数据结构设计题目:客户去银行储蓄模拟程序一( 实验题目 (1)内容描述:编写一个程序反映客户到银行储蓄的过程。 (2)基本要求:要实现以下功能:1:排队 2:储蓄 3:查看排队4.:删除自己所排的队 5.不再排队,剩下的客户依次储蓄 6:下班 二( 实验的工程组成图和程序结构图 main bank 本工程的组成结构如左图所示,程序结构图如右图所示。三( 工程所包含的函数的功能描述 Bank():模拟客户到银行去储蓄的过程。客户排队储蓄,所以要用到一个队列, 这里设计了一个不带头结点的单链表作为队列。 四( 实验工程的算法描述及流程图 //客户排队去银行储蓄,用到了队列的知识,这里设计了一个不带头结点的单链表作为队列来完成排队储蓄过程 #include

#include typedef struct qnode { int data; struct qnode *next; } QNode; //定义链队结点类型 typedef struct { QNode *front,*rear; } QType; //定义链队类型 void bank() //模拟客户储蓄的过程 { int cho,onwork=1,no,find; QType *q; //定义链队类型的指针 QNode *p,*r; //定义链队结点的指针 q=(QType *)malloc(sizeof(QType)); //申请链队的空间 q->front=q->rear=NULL; //创建空队 while (onwork==1) //循环执行 { printf("1:排队 2:储蓄 3:查看排队4:删除自己所排的队 5:不再排队,剩下的客户依次储蓄 6:下班请选择:"); scanf("%d",&cho); switch(cho) { case 1://排队

数据结构大作业要求

数据结构实验讲义 一实验步骤 随之计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。然而,编制一个10,000行的程序的难度绝不仅仅是一个5,000行的程序两倍,因此软件开发需要系统的方法。一种常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实习题的复杂度远不如(从实际问题中提出来的)一个“真正的,,软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,我们制订了如下所述完成实习的五个步骤:’ (一)问题分析和任务定义 通常,实习题目的陈述比较简洁,或者说是有模棱两可的含义。因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。注意:本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么?是否接受非法的输入?对非法输入的回答方式是什么等。这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。 (二)数据类型和系统设计 在设计这一步骤中需分逻辑设计和详细设计两步实现。逻辑设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。作为逻辑设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),各个主要模块的算法,并画出模块之间的调用关系图。详细设计的结果是对数据结构和基本操作的规格说明作出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类c语言写出函数形式的算法框架。在求精的过程中,应尽量避免陷入语言细节,不必过早表述辅助数据结构和局部变量。 (三)编码实现和静态检查 编码是把详细设计的结果进一步求精为程序设计语言程序。程序的每行不要超过60个字符。每个函数体,即不计首部和规格说明部分,一般不要超过40行,最长不得超过60行,否则应该分割成较小的函数。要控制if语句连续嵌套的深度。其他要求参见第一篇的

数据结构课程作业

数据结构课程作业_A 交卷时间:2017-08-09 10:08:51 一、单选题 1. (7分)设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置脚注(10)表示用10进制表示。 A. 688 B. 678 C. 692 D. 696 纠错 得分: 7 知识点:第五章 展开解析 答案 C 解析第五章第二节综合题目 2. (7分)若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3 纠错 得分: 0 知识点:第九章 展开解析 答案 D 解析第九章第一节有序表的查找

(7分)设某完全无向图中有n个顶点,则该完全无向图中有()条边。 A. n(n-1)/2 B. n(n-1) C. n2 D. n2-1 纠错 得分: 7 知识点:第七章 展开解析 答案 A 解析第七章第一节综合题目 4. (7分)若在任意一棵二叉树中,有n0个叶子结点,有n2个度为2的结点,则:n0=_____ A. n2+1 B. n2-1 C. n2+2 D. n2-2 纠错 得分: 7 知识点:第六章 展开解析 答案 A 解析第六章第二节二叉树的性质 5. (7分)栈的插入和删除操作在()进行。 A. 栈顶 B. 栈底 C. 任意位置 D. 指定位置

得分: 7 知识点:第三章 展开解析 答案 A 解析第三章第一节栈的表示和实现 6. (7分)设有序表中有1000个元素,则用二分查找查找元素X最多需要比较()次。 A. 25 B. 10 C. 7 D. 1 纠错 得分: 7 知识点:第九章 展开解析 答案 B 解析第九章第一节有序表的查找 7. (7分)设某棵二叉树的高度为10,则该二叉树上叶子结点最多有()。 A. 20 B. 256 C. 512 D. 1024 纠错 得分: 7 知识点:第六章 展开解析 答案 C 解析第六章第六节二叉树的性质

家谱管理系统 -数据结构大作业

/* 家谱管理系统 任务:实现具有下列功能的家谱管理系统 功能要求: 1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容: 姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。 2). 实现数据的存盘和读盘。 3). 以图形方式显示家谱。 4). 显示第n 代所有人的信息。 5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 按照出生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。 9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。 11).按出生日期对家谱中所有人排序。 12).打开一家谱时,提示当天生日的健在成员。 要求:建立至少30个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。 测试数据及测试结果请在上交的资料中写明; */ #include #include #include #include #include"map.h" #define MAXN 100 #define MAXMEM 100 #define Elemtype char ============================== //树 typedef struct BiTNode { int mark;//标记 int level; char name[50];//姓名 char birthday[50];//生日

数据结构作业

第一章 1、什么是数据对象、数据元素、数据结构? 2、什么是算法?它有哪些特性?它与程序有何区别? 3、用图形表示下列数据结构: (1)S=(D,R), D={a,b,c,d,e,f,g}, R={, , , , } (2)S=(D,R), D={48,25,64,57,82,36,75}, R={R1, R2} R1={<25,36>, <36,48>, <48,57>, <57,64>, <64,75>, <75,82>} R2={<48,25>, <48,64>, <64,57>, <64,82>, <25,36>, <82,75>} 4、将O (1)、O (n)、O (n2)、O (n3)、O (nlog2n)、O (log2n)、O (2n)按增长率递增排列。 第二章 1 试分析顺序表和链表的各自特点。 2 试编写一个算法,将一个顺序表逆置,并使用最少的辅助存储空间实现。 3 试编写一个算法,将两个元素值递减排列的顺序表合并为一个非递增的顺序表。 4 试编写一个算法,在一个递增有序排列的单链表中插入一个新结点x,并保持有序。 5 试编写一个算法,将一个单链表逆置。 第三章 1 若有4个元素,入栈顺序为ABCD,请列出所有可能的出栈序列。 2 试编写一个算法,计算一个循环队列中包含的元素个数。 3 试编写一个算法,实现链栈的入栈出栈操作。

第四章 1 设字符串S="good ",T="I am a student ",R="!",求: (1) CONCA T(T ,R ,S) (2) SUBSTR(T ,8,7) (3) Len(T) 2 若X 和Y 是两个单链表存储的串,试设计一个算法,找出X 中第一个不在Y 中出现的字符。 3 计算下列串的next 值: (1)a a a b c a a b a (2)a b a a b c a c b (3)b a b b a b a b 第五章 1、 已知二维数组A[m][n]采用行序维主方式存储,每个元素占k 个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是什么? 2、 一个稀疏矩阵如图4-17所示,求对应的三元组表示,十字链表表示? 05 10000030200 图1 一个稀疏矩阵 3、 求下列广义表操作的结果 (1) GetHead[(p,h,w)] (2) GetTail[(b,k,p,h)] (3) GetHead[(a,b),(c,d)] (4) GetTail[(a,b),(c,d)] (5) GetHead[GetTail[((a,b),(c,d))]] (6) GetTail[GetHead[((a,b),(c,d))]] 注:[]为函数的符号 4、 利用广义表的GetHead 和GetTail 运算,将原子student 从下列广义表中分离出来。 (1)L1=(solder,teacher,student,worker,farmer) (2)L2=(solder,(teacher,student),worker,farmer) 5、 画出下列广义表的头尾表示法,并求出它的深度。 (1) ((( )), a , (( b,c ) , ( ), d ) , ((( e )))) (2) (((( a ), b )) , ((( ), d ), (e, f )))

大数据结构大作业报告材料

数据结构课程设计课题名称 专业名称 学生姓名 学号+电话 指导教师

评分细则

目录 评分细则----------------------------------------------------------------------------------------------------------------- 2 一、课题描述 ---------------------------------------------------------------------------------------------------------- 4 二、需求分析 ---------------------------------------------------------------------------------------------------------- 4 2.1 ------------------------------------------------------------------------------------------------------------------ 4 2.2- ------------------------------------------------------------------------------------------------------------------4 2.3--------------------------------------------------------------------------------------------------------------------4 三、概要设计 ---------------------------------------------------------------------------------------------------------- 4 3.1 结构分析 ----------------------------------------------------------------------------------------------------------- 4 3.2函数------------------------------------------------------------------------------------------------------------ 4 3.2.1 malloc() --------------------------------------------------------------------------------------------- 4 3.2.2getchar() ----------------------------------------------------------------------------------------------------- 5 3.2.3 list_create() ------------------------------------------------------------------------------------------------ 5 3.2.4 list_disp() --------------------------------------------------------------------------------------------------- 5 3.2.5 list_sort() --------------------------------------------------------------------------------------------------- 5 四、详细设计 ---------------------------------------------------------------------------------------------------------- 5 4.1课题分析 ----------------------------------------------------------------------------------------------------- 5 4.1.1选择 ------------------------------------------------------------------------------------------------- 5 4.1.2冒泡 --------------------------------------------------------------------------------------------------------- 5 4.1.3 堆------------------------------------------------------------------------------------------------------------ 6 4.1.4 快速--------------------------------------------------------------------------------------------------------- 6 4.1.5 基数--------------------------------------------------------------------------------------------------6 4.1.6 希尔--------------------------------------------------------------------------------------------------------- 6 4.1.7 归并--------------------------------------------------------------------------------------------------6 4.2课题实现 ----------------------------------------------------------------------------------------------------- 7 五、测试数据及结果------------------------------------------------------------------------------------------------- 9 六、调试分析及总结----------------------------------------------------------------------------------------------- 10

数据结构大作业

数据结构课程设计 题目:长整数四则运算 班级:信管12-1 学号:1201050642 姓名:庄术洁 指导老师:刘晓庆 2014年5月22日

一、需求分析 1、利用双向循环链表实现长整数的存储,每个结点含一个整数变量。任何整形变量的范围是—(2^15—1)~(2^15—1)。输入和输出形式:按中国对于长证书的表示习惯,每四位一组,组间用逗号隔开。 2、测试数据 (1) 0; 0;应输出“0” (2)—2345,6789;—7654,3211;应输出“—1,0000,0000”。 (3)—9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”。 (4)1,0001,0001;—1,0001,0001;应输出“0”。 (5)1,0001,0001;—1,0001,0000;应输入“1”。 (6)—9999,9999,9999;—9999,9999,9999;应输出“—1,9999,9999,9998”。 (7)1,0000,9999,9999;1应输出“1,0001,0000,0000”。 二、概要设计 为上述程序功能,应以有序表实现长整数的存储,为此,需要抽象数据类型:有序表

(8)有序表的抽象数据类型定义为: ADT Dulinklist{ 数据对象: D={ai|ai为带符号整数,1,2,…,n,n>=0} 数据关系:R1={|ai-1,ai属于集合D,ai-1

数据结构作业及答案

第一章绪论 一、选择题 1.数据结构是一门研究非数值计算的程序设计问题中计算机的1以及它们之间的2和运算等的学科。1 A.数据元素 B.计算方法 C.逻辑存储 D.数据映像 2 A.结构 B.关系 C.运算 D.算法 2.数据结构被形式地定义为(K, R),其中K是1的有限集,R是K上的2有限集。 1 A.算法 B.数据元素 C.数据操作 D.逻辑结构 2 A.操作 B.映像 C.存储 D.关系 3.在数据结构中,从逻辑上可以把数据结构分成。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 4.线性结构的顺序存储结构是一种1的存储结构,线性表的链式存储结构是一种2的存储结构。A.随机存取 B.顺序存取 C.索引存取 D.散列存取 5.算法分析的目的是1,算法分析的两个主要方面其一是指2,其二是指正确性和简单性。1 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 2 A.空间复杂度和时间复杂度 B.研究算法中的输入和输出的关系 C.可读性和文档性 D.数据复杂性和程序复杂性k 6.计算机算法指的是1,它必须具备输入、输出和2等5个特性。 1 A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 2 A.可执行性、可移植性和可扩充性 B.可行性、确定性和有穷性 C.确定性、有穷性和稳定性 D.易读性、稳定性和安全性 7.线性表的逻辑顺序与存储顺序总是一致的,这种说法。A.正确 B.不正确 8线性表若采用链式存储结构时,要求内存中可用存储单元的地址。 A.必须连续的 B.部分地址必须连续的 C.一定是不续的D连续不连续都可以 9.以下的叙述中,正确的是。A.线性表的存储结构优于链式存储结构 B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法。A.正确B.不正确 二、填空题1.数据逻辑结构包括三种类型、和,树形结构和图形结构合称为。2.在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。3.算法的五个重要特性是、、、、。 4.下面程序段的时间复杂度是。 for( i = 0; i < n; i++) for( j = 0; j < m; j++) A[i][j] = 0; 5.下面程序段的时间复杂度是。 i = s = 0; while ( s < n) { i ++; /* i = i +1*/ s += i; /* s = s + i*/ } 6.下面程序段的时间复杂度是。 s = 0; for( i = 0; i < n; i++) for( j = 0; j < n; j++) s += B[i][j]; sum = s; 7.下面程序段的时间复杂度是。 i = 1; while ( i <= n ) i = i * 3;

数据结构大作业-纸牌游戏

数据结构课程设计大作业 题目纸牌游戏 专业计算机科学与技术 学生姓名 __________________ 学号 _____________________ 指导教师 __________________ 完成日期 __________________ 信息与工程学院

目录 一、实验内容概述(设计任务与技术要求) (1) 二、实验目的概述(总体设计方案) (1) 三、解题思路的描述(数据结构和算法的设计): (1) 四、源程序清单(源程序中应该附有必要的注释) (2) 五、程序调试及测试结果 (4) 六、结论 (4) 七、参考文献 (5)

【内容摘要】 编号为1~52的牌,正面向上,从第二张开始,以2为基数,是2的倍数的牌翻一次,直到最 后一张牌;然后,从第三张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从 第四张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;依次类推,知道所有以52 为基数的牌翻过一次。输出:这时正面向上的牌有哪些? 【关键字】 52张纸牌,倍数,基数,数组 【Abstract 】 Numbered 1 to 52 cards, face up, starting from the second to 2 as the base, is a multiple of 2 cards turning on ce, un til the last card; and the n, begi nning from the third to 3 as the base,is a multiple of 3 cards turning once, un til the last card; and the n start from the fourth to 4 as the base, is a multiple of 4 cards turning once, un til the last card; and so on, that was all of 52base of the card turned over on ce.Output: At this time what the cards face up? 【Key words 】 52 cards, multiple, base, array

西电数据结构大作业

题目:数据结构上机报告学院:电子工程学院 专业:信息对抗技术 学生姓名:甘佳霖 学号:14020310092

西安电子科技大学 数据结构课程实验报告实验名称线性表 电子工程学院 1402031 班Array姓名甘佳霖学号 14020310092 同作者 实验日期 2017 年 3 月 18 日

实验一线性表 一、实验目的 1.熟悉线性表的顺序和链式存储结构 2.掌握线性表的基本运算 3.能够利用线性表的基本运算完成线性表应用的运算 二、实验要求 1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n, e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。 2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。 三、设计思路 1.顺序表做逆置操作时将对应的首尾元素位置交换,单链表的指针end指向链表的末尾,指针start指向链表头结点,指针s用来找到指向end节点的节点,将指向链表末尾和头结点的存储内容交换,然后头结点指针指向下一节点,s指针从start节点开始遍历寻找指向end 指针的节点,并将end指针赋值为s指针,就完成了单链表的逆置,可以看出单链表和顺序表都可以完成线性表的逆置。 2.分解单链表的实现思路是首先新建3个循环链表,然后顺序遍历单链表,ASCII码判断链表中的元素属于哪一类元素,然后将这个元素添加到对应的循环链表中,从而实现分解单链表的功能。 四、运行结果 1.单链表逆置:

天大2016年12月《数据结构》期末大作业考核要求

数据结构 要求: 1. 独立完成,作答时要按照模版信息....填写完整,写明题型、题号; 2. 作答方式:手写作答或电脑录入,使用学院统一模版(模版详见附件); 3. 提交方式:以下两种方式任选其一, 1) 手写作答的同学可以将作业以图片形式打包压缩上传; 2) 提交电子文档的同学可以将作业以word 文档格式上传; 4. 上传文件命名为“中心-学号-姓名-科目.rar ” 或“中心-学号-姓名-科目.doc ”; 5. 文件容量大小:不得超过10MB 。 请在以下几组题目中,任选一组题目作答,满分100分。 第一组: 一、编程题(每小题30分,共60分) (一) 设顺序表L 是一个递增有序表,试写一算法,将x 插入L 中,并使L 仍是一个有序表。 (二) 用标准C 语言实现Hanoi 塔问题 二、解答题(20分) (一) 对下面的带权无向图采用prim 算法从顶点①开始构造最小生成树。(写出加入生成树顶点集合S 和选择Edge 的顺序) ① 9 10 ② 7 ③ 5 6 7 ④ ⑤ 11 8

三、画图题(20分) (一) 将给定的图简化为最小的生成树,要求从顶点1出发。 第二组: 一、编程题(每小题30分,共60分) (一) 对于二维整数数组A[m][n],对下列三种情况,分别编写相应的函数。 1.求数组所有边缘元素的数值和。 int sum1(int A[M][N],int m ,int n) { 2.求从A[0][0]开始的互不相邻的所有元素的和 注:一个元素的八个方向上的第一个元素均为相邻元素。 int sum2 (int A[M][N] , int m , int n) { 3. 假定m=n ,并为偶数,请分别计算正、反两条对角线上的元素值之和。 int sum3(int A[M][N] , int n) {

数据结构大作业题目

《数据结构大作业》要求 一、作业目的 1、掌握用数据结构的知识进行Java或者C程序设计。 2、应用所学的数据结构完成一个具有一定实际意义的应用程序的设计、编码、调试,锻炼 实践动手能力,提高编程水平。 二、作业内容 1、图书管理系统 问题描述:实现图书管理系统,主要为图书管理员和借阅者提供管理和查询服务。 基本功能要求: 程序必须采用链表数据结构实现。 图书信息至少包括以下信息:书名,ISBN、作者、出版社、出版时间,入库时间,库存量(图书馆购买此书的数目),借阅数(被借阅的本数)。 图书管理员身份可以完成以下操作: (1)录入:增加一本图书信息; (2)删除:删除某一本图书的信息; (3)修改:修改某一本图书的信息; (4)查询:根据书名或图书ISBN等查询图书信息(可选择:简单条件查询,组合 条件查询等)。 (5)排序:根据书名或入库时间等信息进行排序,尽可能提高查找和维护性能; (6)借书:借出一本书,该书的借阅量增加一本。 (7)还书:还回一本书,该书的借阅量减少一本。 (8)统计:统计所有的借出的图书数目,即:所有图书借阅量之和。 (9)输出:输出所有图书的所有信息,要求格式清晰,方便查看。 扩展功能要求: (1)导出:把用户信息导出到文件中保存; (2)实现图形用户界面与用户进行交互。 2、学生管理系统 必须完成学籍登记表中的下面功能。 登记表中包括:学号、姓名、班级(如:13级软件1班)、性别、手机号码、选修课程等信息。 程序必须采用链表数据结构实现; (1)插入:将某学生的基本信息插入到登记表中; (2)删除:将满足条件的基本信息删除; (3)修改:对基本信息的数据项进行修改;

数据结构大作业

课程设计说明书 设计题目:学生管理系统 专业:xxxxxx 班级:xxxxxxxxxxxxxxxxxx 设计人:xxxxxxxxxxxxxxx 山东科技大学2015年 1 月 3 日

学生管理系统 1.需求分析说明 学生信息管理者用此程序所要完成的主要工作为:输入学生的个人信息、查找学生信息、通过此系统可以方便的进行上述工作。 每位同学所包含的信息有:姓名、学号、语文成绩、数学成绩和英语成绩。 1.1 主函数模块 本模块的主要功能是调用各个模块,实现程序的主要功能。 1.2 排序功能 本模块的主要功能是根据用户的选择进行数组的创建,并对输入数据或者随机产生的数据进行排序 1.3 输入子模块 本模块的主要功能是通过键盘录入学生信息,并对用户输入数据进行处理,创建数组。 1.4 系统需求分析 开发环境:Windows XP以上版本操作系统 实用软件:编写实验报告:Microsoft Office Word 编译工具:visual C++ 6.0 二、概要设计 2.1 功能模块图

功能模块图 2.2各模块的算法设计说明 (1)存储学生信息功能,定义结构体student,用scanf和cin函数进行输入。流程图如图2.1.1 存储学生信息流程图:

存储学生信息流程图 相应代码设计: typedef struct A { char a[20];//学生姓名 int num;//学生学号 int chscore,mascore,enscore;//学生的语文数学英语成绩 } Student; //存储学生个人信息的结构体 typedef struct { Student *elem; int length; } SqList; (2)查找有补考的同学,并按成绩降序排列输出。流程图如图2.1.2查找有补考同学信息功能流程图:

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