南邮数据结构实验三
实验报告
(2015 / 2016 学年第一学期)
课程名称数据结构
实验名称图的基本运算及飞机换乘次数最少问题
实验时间2015 年12 月 4 日
指导单位计算机科学与技术系
指导教师黄海平
学生姓名陈明阳班级学号Q14010119 学院(系) 贝尔英才专业信息科技强化班
实验报告
源代码:
Graph.h
#include
#include
using namespace std;
const int INF = 2147483647;
enum ResultCode { Underflow, Duplicate, Failure, Success, NotPresent, OutOfBounds }; template
class Graph//抽象类
{
public:
virtual ResultCode Insert(int u, int v, T w) = 0;
virtual ResultCode Remove(int u, int v) = 0;
virtual bool Exist(int u, int v)const = 0;
protected:
int n, e;
};
template
class MGraph :public Graph
{
public:
MGraph(int mSize, const T noedg);
~MGraph();
ResultCode Insert(int u, int v, T w);
ResultCode Remove(int u, int v);
bool Exist(int u, int v)const;
int Choose(int *d, bool *s);
void Dijkstra(int v, T *d, int *path);
protected:
T **a;
T noEdge;
};
template
MGraph
{
n = mSize;
e = 0;
noEdge = noedg;
a = new T*[n];
for (int i = 0; i { a[i] = new T[n]; for (int j = 0; j a[i][j] = noEdge; a[i][i] = 0; } } template MGraph { for (int i = 0; i delete[]a[i]; delete[]a; } template ResultCode MGraph { if (u<0 || v<0 || u>n - 1 || v>n - 1 || u == v) return Failure; if (a[u][v] != noEdge) return Duplicate; a[u][v] = w; a[v][u] = w; e++; return Success; } template ResultCode MGraph { if (u<0 || v<0 || u>n - 1 || v>n - 1 || u == v) return Failure; if (a[u][v] == noEdge) return NotPresent; a[u][v] = noEdge; a[v][u] = noEdge; e--; return Success; } template bool MGraph { if (u<0 || v<0 || u>n - 1 || v>n - 1 || u == v || a[u][v] == noEdge) return false; return true; } template int MGraph { int i, minpos; T min; min = INF; minpos = -1; for (i = 0; i if (d[i] <= min&&!s[i]) { min = d[i]; minpos = i; } return minpos; } template void MGraph int i, k, w; if (v<0 || v>n - 1) throw OutOfBounds; bool *s = new bool[n]; for (i = 0; i { s[i] = false; d[i] = a[v][i]; if (i != v&&d[i] path[i] = v; else path[i] = -1; } s[v] = true; d[v] = 0; for (i = 1; i { k = Choose(d, s); s[k] = true; for (w = 0; w if (!s[w] && (d[k] + a[k][w]) { d[w] = d[k] + a[k][w]; path[w] = k; } } } 源.cpp #include #include #include"Graph.h" using namespace std; int main() { int n, m; cout <<"请输入城市个数:"; cin >> n; cout <<"请输入航线条数:"; cin >> m; MGraph int c, f; cout <<"请输入每条航线的起点和终点: "<< endl; for (int i = 0; i { cout <<"航线"<< i + 1 <<": "; cin >> c >> f; A.Insert(c, f, 1); } char s; do { int v, w; cout <<"请输入你的起点和终点:"; cin >> v >> w; while (v<0 || w<0 || w>n - 1 || v>n - 1) { cout <<"输入错误!,没有该城市:"; cin >> v >> w; } int *b = new i nt[n]; int *d = new i nt[n]; int *path = new i nt[n]; A.Dijkstra(v, d, path); int e = n - 1; int j, i,k = 0; for (j = 0; j b[j] = -2; if (w != v) { j = w; while (path[j] != -1) { b[e] = path[j]; e--; j = path[j]; } if (e == n - 1 || d[j] == INF) cout <<"这两点间无线路!"<< endl; else { cout <<"从"< for (k = 0; k { if (b[k] != -2) cout << b[k] <<","; } cout << w << endl; } } if (w == v) cout <<"看来你钱比较多"<< endl; delete[]b; delete[]d; delete[]path; cout <<"请问是否继续查询路线?请输入Y/N:"; cin >> s; while (s != 'Y'&&s != 'y'&&s != 'n'&&s != 'N') { cout <<"请问是否继续查询路线?请输入Y/N:"; cin >> s; } } while (s == 'Y' || s == 'y'); return 0; } 运行截图: 实验报告 实验2 查找算法的实现和应用?实验目的 1. 熟练掌握静态查找表的查找方法; 2. 熟练掌握动态查找表的查找方法; 3. 掌握hash表的技术. ?实验内容 1.用二分查找法对查找表进行查找; 2.建立二叉排序树并对该树进行查找; 3.确定hash函数及冲突处理方法,建立一个hash表并实现查找。 程序代码 #include cout<<"Not present!"; } return 0; } 结果 二叉排序树 #include 《数据结构课程实验》大纲 一、《数据结构课程实验》的地位与作用 “数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: (1)内容丰富,学习量大,给学习带来困难; (2)贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点; (3)所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度; (4)隐含在各部分的技术和方法丰富,也是学习的重点和难点。 根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。通过实验实践内容的训练,突出构造性思维训练的特征, 目的是提高学生组织数据及编写大型程序的能力。实验学时为18。 二、《数据结构课程实验》的目的和要求 不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。在掌握基本算法的基础上,掌握分析、解决实际问题的能力。 三、《数据结构课程实验》内容 课程实验共18学时,要求完成以下六个题目: 实习一约瑟夫环问题(2学时) 实验报告一 实验名称:SQL语言的应用 指导教师:茅苏 实验类型:验证 实验学时:4*2 实验时间:2012年9月28日 一、实验目的和要求 练习使用SQL SERVER数据库产品,熟练使用查询分析器和企业管理器; 掌握SQL语言中常用的语句:用DDL创建基本表;用DML插入、修改、删除数据;用QL查询数据等。 二、实验环境(实验设备) 硬件:个人计算机; 软件:MS SQL SERVER环境。 三、实验原理及内容 1.用SQL SERVER的企业管理器创建数据库 数据库名称:10001927db 操作步骤:1、单击左侧的SQL Server组 右键 新建SQL Server注册 下一步 在左侧的“可用的服务器”栏选中或输入CC-PC,点击中间 的添加,将CC-PC添加到右侧的“添加的服务器”栏 下一步 选中“登录时使用Windows身份认证”,然后点击下一步 选中“在 现有SQL Server组中添加SQL Server”,然后点击下一步 完 成 关闭。 2、单击左侧的SQL Server组下面可用的已注册子组里面的数据库→ 右键→新建数据库→输入数据库名称10001927db 2.用查询分析器在上一步创建的数据库中完成以下功能 (1)进入查询分析器并选择操作的数据库 操作步骤:1、开始→程序→MS SQL Server→查询分析器 确认SQL Server(s)为CC-PC 选择Windows身份认证 点击确定 2、在工具栏的下拉链表种选择名为10001927db的数据库。 (2)建立基本表:学生、课程和选课,写出DDL语句。 要求:需为每张表建立主键,其他完整性约束可自己添加。 数据结构实验指导书 一、实验目的 《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。本课程较为系统地论述了软件设计中常用的数据结构以及相应的存储结构与实现算法,并做了相应的性能分析和比较,课程内容丰富,理论系统。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: 1)理论艰深,方法灵活,给学习带来困难; 2)内容丰富,涉及的知识较多,学习有一定的难度; 3)侧重于知识的实际应用,要求学生有较好的思维以及较强的分析和解决问题的能力,因而加大了学习的难度; 根据《数据结构》课程本身的特性,通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生分析问题,组织数据及设计大型软件的能力。 课程上机实验的目的,不仅仅是验证教材和讲课的内容,检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: (1)加深对课堂讲授内容的理解 实验是对学生的一种全面综合训练。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变" 活" ,起到深化理解和灵活掌握教学内容的目的。 不少学生在解答习题尤其是算法设计时,觉得无从下手。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出 现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 (2) 培养学生软件设计的综合能力 平时的练习较偏重于如何编写功能单一的" 小" 算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。 通过实验使学生不仅能够深化理解教学内容,进一步提高灵活运用数据结构、算法和程序设计技术的能力,而且可以在需求分析、总体结构设计、算法设计、程序设计、上机操作及程序调试等基本技能方面受到综合训练。实验着眼于原理与应用的结合点,使学生学会如何把书本上和课堂上学到的知识用于解决实际问题,从而培养计算机软件工作所需要的动手能力。 (3) 熟悉程序开发环境,学习上机调试程序一个程序从编辑,编译,连接到运行,都要在一定的外部操作环境下才能进行。所谓" 环境" 就是所用的计算机系统硬件,软件条件,只有学会使用这些环境,才能进行 程序开发工作。通过上机实验,熟练地掌握程序的开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆语法错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,尽快掌握程序调试方法是非常重要的。分析问题,选择算法,编好程序,只能说完成一半工作,另一半工作就是调试程序,运行程序并得到正确结果。 二、实验要求 常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题目的远不如从实际问题中的复杂程度度高,但为了培养一个软件工作者所应具备的科学工作的方法和作风,也应遵循以下五个步骤来完成实验题目: 1) 问题分析和任务定义 在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的 数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include 实验报告 2013 /2014 学年第二学期 实验名称SQL语言的应用专业广播电视工程 学生学号11003829 学生姓名____林钢_____ 指导教师胥备 SQL语言的应用实验报告 实验名称:SQL语言的应用 指导教师:胥备 实验类型:验证 实验学时:4*2 实验时间:2014年3月18日 一、实验目的和要求 练习使用SQL SERVER数据库产品,熟练使用查询分析器和企业管理器; 掌握SQL语言中常用的语句:用DDL创建基本表;用DML插入、修改、删除数据;用QL查询数据等。 二、实验环境(实验设备) 硬件:个人计算机; 软件:MS SQL SERVER环境。 三、实验原理及内容 1.用SQL SERVER的企业管理器创建数据库 数据库名称:M11003829 操作步骤:1、单击左侧的SQL Server组→右键→新建SQL Server注册→下一步→在左侧的“可用的服务器”栏选中或输入CC-PC→点击中间 的添加将CC-PC添加到右侧的“添加的服务器”栏→下一步→选 中“登录时使用Windows身份认证”→点击下一步→选中“在现 有SQL Server组中添加SQL Server”→点击下一步→完成→关 闭。 2、单击左侧的SQL Server组下面可用的已注册子组里面的数据库→ 右键→新建数据库→输入数据库名称M11003829 2.用查询分析器在上一步创建的数据库中完成以下功能 1)进入查询分析器并选择操作的数据库 操作步骤:1、开始→程序→MS SQL Server→查询分析器 设置:确认SQL Server(s)为CC-PC 选择Windows身份认证 确定 2、在工具栏的下拉链表种选择名为M11003829的数据库。 2)建立基本表:学生、课程和选课,写出DDL语句 建立学生表、插入数据。 学生 学号姓名年龄性别 S1 WANG 20 M S2 LIU 19 F S3 CHEN 22 M S4 WU 19 M S5 LI 21 F Create TABLE STUDENT ( SNO VARCHAR(7) NOT NULL, SNAME VARCHAR(10)NOT NULL, AGE INT NOT NULL, SEX VARCHAR(7), Primary Key(SNO), ); use M11003829; Insert Into STUDENT Values ('S1' ,'WANG', '20', 'M'); Insert Into STUDENT Values ('S2', 'LIU','19',' F'); Insert Into STUDENT Values ('S3', 'CHEN' ,'22', 'M'); Insert Into STUDENT Values ('S4', 'WU', '19', 'M'); Insert Into STUDENT Values ('S5', 'LI', '21', 'F'); 建立课程表、插入数据。 实验指导-数据结构B 附录综合实验 1、实验目的 本课程的目标之一是使得学生学会如何从问题出发,分析数据,构造求解问题的数据结构和算法,培养学生进行较复杂程序设计的能力。本课程实践性较强,为实现课程目标,要求学生完成一定数量的上机实验。从而一方面使得学生加深对课内所学的各种数据的逻辑结构、存储表示和运算的方法等基本内容的理解,学习如何运用所学的数据结构和算法知识解决应用问题的方法;另一方面,在程序设计方法、C语言编程环境以及程序的调试和测试等方面得到必要的训练。 2、实验基本要求: 1)学习使用自顶向下的分析方法,分析问题空间中存在哪些模块,明确这些模块之间的关系。 2)使用结构化的系统设计方法,将系统中存在的各个模块合理组织成层次结构,并明确定义各个结构体。确定模块的主要数据结构和接口。 3)熟练使用C语言环境来实现或重用模块,从而实现系统的层次结构。模块的实现包括结构体的定义和函数的实现。 4)学会利用数据结构所学知识设计结构清晰的算法和程序,并会分析所设计的算法的时间和空间复杂度。 5)所有的算法和实现均使用C语言进行描述,实验结束写出实验报告。 3、实验项目与内容: 1、线性表的基本运算及多项式的算术运算 内容:实现顺序表和单链表的基本运算,多项式的加法和乘法算术运算。 要求:能够正确演示线性表的查找、插入、删除运算。实现多项式的加法和乘法运算操作。 2、二叉树的基本操作及哈夫曼编码译码系统的实现 内容:创建一棵二叉树,实现先序、中序和后序遍历一棵二叉树,计算二叉树结点个数等操作。哈夫曼编码/译码系统。 要求:能成功演示二叉树的有关运算,实现哈夫曼编码/译码的功能,运算完毕后能成功释放二叉树所有结点占用的系统内存。 3、图的基本运算及智能交通中的最佳路径选择问题 内容:在邻接矩阵和邻接表两种不同存储结构上实现图的基本运算的算法,实现图的深度和宽度优先遍历算法,解决智能交通中的路径选择问题。设有n 个地点,编号为0~n-1,m条路径的起点、终点和代价由用户输入提供,寻找最佳路径方案(例如花费时间最少、路径长度最短、交通费用最小等,任选其一即可)。 要求:设计主函数,测试上述运算。 4、各种内排序算法的实现及性能比较 内容:验证教材的各种内排序算法。分析各种排序算法的时间复杂度。 要求:使用随机数产生器产生较大规模数据集合,运行上述各种排序算法,使用系统时钟测量各算法所需的实际时间,并进行比较。 班级::学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 二、实验容 定义一个包含学生信息(学号,,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include typedef int Status; // 定义函数返回值类型 typedef struct { char num[10]; // 学号 char name[20]; // double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL; return OK; 数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"< 课内实验报告 课程名:数据库原理与应用任课教师: 专业: 学号: 姓名: 2014/2015学年第2学期 南京邮电大学管理学院 指导教师成绩评定表 题 目学生成绩管理数据库的建立 学生姓名班级学号专业 评分内容评分标准总分评分 平时成绩10%认真对待课程设计,遵守实验室规定,上机不迟到早退,不 做和设计无关的事。 10数据设计是否完整、合理10流程设计是否全面、深入10 设计内容 30% 界面设计是否美观易用10 文档内容是否完整、逻辑清晰10 文档写作 20%文档格式是否符合要求10运行效果20 系统运行 40%现场问题的回答20 总评分 其他问题 成绩指导教师签名翟丹妮日期2015.6.10 ……系统设计与开发 一.问题描述 1.场景介绍 学生成绩管理数据库的建立 2.存在的问题 数据录入方式的问题,查询问题,sql语言的编写 3.解决方式 你的系统打算通过什么方式来解决这些问题 使用ACCESS数据库来处理 二.系统分析 1.用户分析 教师、学生 2.流程分析 设计学生数据结构,输入信息,排版建立窗体搜索 3.数据分析 学生(学号,姓名,性别,年龄,籍贯,班级代号)课程(课程号,课程名称,学分数,教师代号) 成绩(学号,课程号,成绩,考试时间) 教师(教师代号,姓名,性别,年龄,职称) (1)构建一个教学管理关系数据库如下: 学生(学号,姓名,性别,年龄,籍贯,班级代号)课程(课程号,课程名称,学分数,教师代号) 成绩(学号,课程号,成绩,考试时间) 教师(教师代号,姓名,性别,年龄,职称) 4.功能分析 针对各类用户,你的系统打算分别提供哪些功能 学生成绩的录入,搜索,排名等 《数据结构》实验指导 (计算机信息大类适用) 实验报告至少包含以下内容: 实验名称 实验目的与要求: 实验内容与步骤(需要你进行细化): 实验结果(若顺利完成,可简单说明;若实验过程中遇到问题,也请在此说明) 收获与体会(根据个人的实际情况进行说明,不得空缺) 实验1 大整数加法(8课时) 目的与要求: 1、线性表的链式存储结构及其基本运算、实现方法和技术的训练。 2、单链表的简单应用训练。 3、熟悉标准模版库STL中的链表相关的知识。 内容与步骤: 1、编程实现单链表的基本操作。 2、利用单链表存储大整数(大整数的位数不限)。 3、利用单链表实现两个大整数的相加运算。 4、进行测试,完成HLOJ(https://www.360docs.net/doc/cc10485181.html,) 9515 02-线性表大整数A+B。 5、用STL之list完成上面的任务。 6、尝试完成HLOJ 9516 02-线性表大菲波数。 实验2 栈序列匹配(8课时) 目的与要求 1、栈的顺序存储结构及其基本运算、实现方法和技术的训练。 2、栈的简单应用训练。 3、熟悉标准模版库STL中的栈相关的知识。 内容与步骤: 1、编程实现顺序栈及其基本操作。 2、对于给出的入栈序列和出栈序列,判断2个序列是否相容。即:能否利用栈 将入栈序列转换为出栈序列。 3、进行测试,完成HLOJ 9525 03-栈与队列栈序列匹配。 4、用STL之stack完成上面的任务。 5、尝试完成HLOJ 9522 03-栈与队列胡同。 实验3 二叉排序树(8课时) 目的与要求 1、二叉树的链式存储结构及其基本运算、实现方法和技术的训练。 2、二叉树的遍历方法的训练。 3、二叉树的简单应用。 内容与步骤: 1、编程实现采用链式存储结构的二叉排序树。 2、实现插入节点的操作。 3、实现查找节点的操作(若查找失败,则将新节点插入二叉排序树)。 4、利用遍历算法对该二叉排序树中结点的关键字按递增和递减顺序输出,完成 HLOJ 9576 07-查找二叉排序树。 5、尝试利用二叉排序树完成HLOJ 9580 07-查找Let the Balloon Rise。 实验4 最小生成树(8课时) 目的与要求 1、图的邻接矩阵存储结构及其相关运算的训练。 2、掌握最小生成树的概念。 3、利用Prim算法求解最小生成树。 实验背景: 给定一个地区的n个城市间的距离网,用Prim算法建立最小生成树,并计算得到的最小生成树的代价。要求显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 内容与步骤: 1、建立采用邻接矩阵的图。 2、编程实现Prim算法,求解最小生成树的代价。 3、尝试利用Prim算法完成:HLOJ 9561 06-图最小生成树。 长春大学计算机学院网络工程专业 数据结构实验报告 实验名称:实验二栈和队列的操作与应用 班级:网络14406 姓名:李奎学号:041440624 实验地点:日期: 一、实验目的: 1.熟练掌握栈和队列的特点。 2.掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用。 3.掌握链队的入队和出队等基本操作。 4.加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力。 二、实验内容、要求和环境: 注:将完成的实验报告重命名为:班级+学号+姓名+(实验二),(如:041340538张三(实验二)),发邮件到:ccujsjzl@https://www.360docs.net/doc/cc10485181.html,。提交时限:本次实验后24小时之内。 阅读程序,完成填空,并上机运行调试。 1、顺序栈,对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数 (1)文件SqStackDef. h 中实现了栈的顺序存储表示 #define STACK_INIT_SIZE 10 /* 存储空间初始分配量*/ #define STACKINCREMENT 2 /* 存储空间分配增量*/ typedef struct SqStack { SElemType *base; /* 在栈构造之前和销毁之后,base 的值为NULL */ SElemType *top; /* 栈顶指针*/ int stacksize; /* 当前已分配的存储空间,以元素为单位*/ }SqStack; /* 顺序栈*/ (2)文件SqStackAlgo.h 中实现顺序栈的基本操作(存储结构由SqStackDef.h 定义) Status InitStack(SqStack &S) { /* 构造一个空栈S */ S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); /* 存储分配失败*/ S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; } int StackLength(SqStack S) { // 返回S 的元素个数,即栈的长度, 编写此函数 2009级数据结构实验报告 实验名称:约瑟夫问题 学生姓名:李凯 班级:21班 班内序号:06 学号:09210609 日期:2010年11月5日 1.实验要求 1)功能描述:有n个人围城一个圆圈,给任意一个正整数m,从第一个人开始依次报数,数到m时则第m个人出列,重复进行,直到所有人均出列为止。请输出n个人的出列顺序。 2)输入描述:从源文件中读取。 输出描述:依次从显示屏上输出出列顺序。 2. 程序分析 1)存储结构的选择 单循环链表 2)链表的ADT定义 ADT List{ 数据对象:D={a i|a i∈ElemSet,i=1,2,3,…n,n≧0} 数据关系:R={< a i-1, a i>| a i-1 ,a i∈D,i=1,2,3,4….,n} 基本操作: ListInit(&L);//构造一个空的单链表表L ListEmpty(L); //判断单链表L是否是空表,若是,则返回1,否则返回0. ListLength(L); //求单链表L的长度 GetElem(L,i);//返回链表L中第i个数据元素的值; ListSort(LinkList [内容要求] 1、存储结构:顺序表、单链表或其他存储结构,需要画示意图,可参考书上P59 页图2-9 2.2 关键算法分析 结点类: template 课程设计I报告 题目:课程设计 班级:44 姓名:范海霞 指导教师:黄双颖 职称: 成绩: 通达学院 2015 年 1 月 4 日 一:SPSS的安装和使用 在PC机上安装SPSS软件,打开软件: 基本统计分析功能包括描述统计和行列计算,还包括在基本分析中最受欢迎的常见统计功能,如汇总、计数、交叉分析、分类比较、描述性统计、因子分析、回归分析及聚类分析等等。具体如下: 1.数据访问、数据准备、数据管理与输出管理; 2.描述统计和探索分析:频数、描述、集中趋势和离散趋势分析、分布分析与查看、正态性检验与正态转换、均值的置信区间估计; 3.交叉表:计数;行、列和总计百分比;独立性检验;定类变量和定序变量的相关性测度; 4.二元统计:均值比较、T检验、单因素方差分析; 5.相关分析:双变量相关分析、偏相关分析、距离分析; 6.线性回归分析:自动线性建模、线性回归、Ordinal回归—PLUM、曲线估计; 7.非参数检验:单一样本检验、双重相关样本检验、K重相关样本检验、双重独立样本检验、K重独立样本检验; 8.多重响应分析:交叉表、频数表; 9.预测数值结果和区分群体:K-means聚类分析、分级聚类分析、两步聚类分析、快速聚类分析、因子分析、主成分分析、最近邻元素分析; 10. 判别分析; 11.尺度分析; 12. 报告:各种报告、记录摘要、图表功能(分类图表、条型图、线型图、面积图、高低图、箱线图、散点图、质量控制图、诊断和探测图等); 13.数据管理、数据转换与文件管理; 二.数据文件的处理 SPSS数据文件是一种结构性数据文件,由数据的结构和数据的内容两部分构成,也可以说由变量和观测两部分构成。定义一个变量至少要定义它的两个属性,即变量名和变量类型其他属性可以暂时采用系统默认值,待以后分析过程中如果有需要再对其进行设置。在spss数据编辑窗口中单击“变量视窗”标签,进入变量视窗界面,即可对变量的各个属性进行设置。 1.创建一个数据文件数据 (1)选择菜单【文件】→【新建】→【数据】新建一个数据文件,进入数据编辑窗口。窗口顶部标题为“PASW Statistics数据编辑器”。 (2)单击左下角【变量视窗】标签进入变量视图界面,根据试验的设计定义每个变量类型。 《数据结构》实验指导书 贵州大学 电子信息学院 通信工程 目录 实验一顺序表的操作 (3) 实验二链表操作 (8) 实验三集合、稀疏矩阵和广义表 (19) 实验四栈和队列 (42) 实验五二叉树操作、图形或网状结构 (55) 实验六查找、排序 (88) 贵州大学实验报告 (109) 实验一顺序表的操作 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的和要求 1、熟练掌握线性表的基本操作在顺序存储和链式存储上的实现。 2、以线性表的各种操作(建立、插入、删除等)的实现为重点。 3、掌握线性表的动态分配顺序存储结构的定义和基本操作的实现。 二、实验内容及步骤要求 1、定义顺序表类型,输入一组整型数据,建立顺序表。 typedef int ElemType; //定义顺序表 struct List{ ElemType *list; int Size; int MaxSize; }; 2、实现该线性表的删除。 3、实现该线性表的插入。 4、实现线性表中数据的显示。 5、实现线性表数据的定位和查找。 6、编写一个主函数,调试上述算法。 7、完成实验报告。 三、实验原理、方法和手段 1、根据实验内容编程,上机调试、得出正确的运行程序。 2、编译运行程序,观察运行情况和输出结果。 四、实验条件 运行Visual c++的微机一台 五、实验结果与分析 对程序进行调试,并将运行结果进行截图、对所得到的的结果分析。 六、实验总结 记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等,并将其写入实验报告中。 【附录----源程序】 #include 《数据结构实验》实验指导书及答案 信电工程学院计算机科学和技术教研室编 2011.12 数据结构实验所有代码整理 作者郑涛 声明:在这里我整理了数据结构实验的所有代码,希望能对大家的数据结构实验的考试有所帮助,大家可以有选择地浏览,特别针对一些重点知识需要加强记忆(ps:重点知识最好让孙天凯给出),希望大家能够在数据结构实验的考试中取得令人满意的成绩,如果有做的 不好的地方请大家谅解并欢迎予以指正。 实验一熟悉编程环境 实验预备知识: 1.熟悉本课程的语言编译环境(TC或VC),能够用C语言编写完整的程序,并能够发现和改正错误。 2.能够灵活的编写C程序,并能够熟练输入C程序。 一、实验目的 1.熟悉C语言编译环境,掌握C程序的编写、编译、运行和调试过程。 2.能够熟练的将C程序存储到指定位置。 二、实验环境 ⒈硬件:每个学生需配备计算机一台。 ⒉软件:Windows操作系统+Turbo C; 三、实验要求 1.将实验中每个功能用一个函数实现。 2.每个输入前要有输入提示(如:请输入2个整数当中用空格分割:),每个输出数据都要求有内容说明(如:280和100的和是:380。)。 3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。 四、实验内容 1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。 2.编写一个输入某个学生10门课程成绩的函数(10门课程成绩放到结构体数组中,结构体包括:课程编号,课程名称,课程成绩)。 3.编写一个求10门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。 4.编写一个求10门成绩平均成绩的函数。 5.编写函数求出比平均成绩高的所有课程及成绩。 #include 《数据结构》实验报告 实验序号:1 实验项目名称:概论 附源程序清单: 1. #include 2. #include数据结构实验
数据结构实验报告格式
SQL语言的应用 南京邮电大学软件工程与数据库实验报告一
数据结构课程实验指导书
数据结构实验报告
SQL语言的应用实验报告 南京邮电大学
实验指导-数据结构B教案资料
数据结构实验一 实验报告
数据结构实验报告全集
【VIP专享】南邮数据库实验报告
《数据结构》实验指导
数据结构实验
数据结构实验报告模板
南邮课程设计实验报告
2017数据结构实验指导书
数据结构实验指导书及答案(徐州工程学院)
数据结构实验1