数据结构实验报告要求及范例

合集下载

数据结构课程实验报告(回文篇)

数据结构课程实验报告(回文篇)

数据结构课程实验报告要求实验题目:回文判断算法班级通信143姓名刘海波学号2014101114日期2015.6.17一、需求分析1.程序的功能;利用栈和队列的操作来实现对字符序列是否是一个回文序列的判断。

设计和验证入栈、出栈及入队、出队的算法。

2.输入输出的要求;从键盘读入一组字符序列,按输入顺序入队列到链式队列A中。

并将创建好的A队列中元素依次遍历,打印在屏幕上。

将字符序列从A队列出队列,压入到一个顺序栈中。

再将字符序列从顺序栈中出栈,入队到另一个链式队列B中。

将创建好的B队列中元素依次遍历,打印在屏幕上。

将A,B队列中的元素出队逐一比较,判断是否一致。

若一致则是回文,并将判定结果打印到屏幕上。

3.测试数据:输入一组字符串进行判断。

二、概要设计1.本程序所用的抽象数据类型的定义;typedef struct{char item[STACKSIZE];int top;}SqStack;typedef struct QNode{char data;struct QNode *next;}LQNode, *PQNode;typedef struct{PQNode front,rear;} LinkQueue;2.主程序的流程及各程序模块之间的层次关系。

从键盘上读取一个字符,同时存储在顺序栈与链队列之中,直到字符序列的最后一个字符为*停止插入。

在程序中设置了一个标志位flag,将输入的序列分别做入栈、出栈、入队、出队操作,若出栈与出队的数据完全一致,则将flag标志为1,否则为零。

Flag 为1,则表示该序列是回文序列,否则,为非回文序列。

三、详细设计1.采用c语言定义相关的数据类型;typedef struct{char item[STACKSIZE];int top;}SqStack;typedef struct QNode{char data;struct QNode *next;}LQNode, *PQNode;typedef struct{PQNode front,rear;} LinkQueue;2.写出各模块的伪码算法;int InitStack(SqStack *S)int StackEmpty(SqStack S)int Push(SqStack *s, char data)int Pop(SqStack *s, char *data)int InitQueue(LinkQueue *q)int QueueEmpty(LinkQueue q)int EnQueue(LinkQueue *q, char item)int DeQueue(LinkQueue *q, char *item)int PutOutQueue(LinkQueue q)四、调试分析1.调试中遇到的问题及对问题的解决方法;对于语句中的一般回文单词能正常输出,句末跟标点符号连在一起的回文单词也能通过程序把字符串末尾的标点给去掉并正常输出,而字符串中的连接符可以作为回文单词的组成部分一起输出。

数据结构实验报告样例

数据结构实验报告样例

数据结构实验报告样例第五章实验报告在做完实验以后写实验报告,是整个实验过程的⼀个重要环节。

报告的撰写过程实际是对整个实验的总结与回顾,有助加深对实验的理解,提⾼对实验的认识。

本章介绍如何撰写实验报告。

2.1如何撰写实验报告对于每⼀个实验中所要求解决的问题,都应该有规范详细的报告⽂档,本实验要求报告的规范如下:⼀、问题描述1.实验题⽬:⼀般教材中会给出实验题⽬。

2.基本要求:实验的基本要求,⼀般也会在教材中给出。

3.测试数据:实验中要⽤到的测试数据,部分实验由教材提供。

⼆、需求分析1.程序所能达到的基本可能。

2.输⼊的形式及输⼊值范围3.输出的形式4.测试数据要求三、概要设计1.所⽤到得数据结构及其ADT2.主程序流程及其模块调⽤关系3.核⼼模块的算法伪码四、详细设计1. 实现概要设计中的数据结构ADT2. 实现每个操作的伪码,重点语句加注释3. 主程序和其他模块的伪码4. 函数调⽤关系图五、调试分析1.设计与调试过程中遇到的问题分析、体会2.主要算法的时间和空间复杂度分析六、使⽤说明简要给出程序的运⾏和操作步骤。

七、测试结果给出实验结果,包括输⼊和输出。

⼋、附录带注释的源程序。

2.2实验报告样例⼀、问题描述1.实验题⽬:利⽤有序链表表⽰正整数集合,实现集合的交、并和差运算。

2.基本要求:有⽤户输⼊两种整数分别作为两个集合元素,由程序计算它们的交、并和差,并输出结果。

3.测试数据:S1={3,5,6,9,12,27,35} S2={5,8,10,12,27,31,42,51,55,63}运⾏结果应为:S1∪S2={3,5,6,8,9,10,12,27,31,35,42,51,55,63}S1∩S2={5,12,27}S1-S2={3,6,9,35}⼆、需求分析1.本程序⽤来求出任意两个正整数集合的交、并、差。

2.程序运⾏后显⽰提⽰信息,提⽰⽤户输⼊两组整数,程序需⾃动顾虑重复的整数和负数。

3. ⽤户输⼊完毕后,程序⾃动输出运算结果。

《数据结构》实验1实验报告

《数据结构》实验1实验报告

南京工程学院实验报告<班级>_<学号>_<实验X>.RAR文件形式交付指导老师。

一、实验目的1.熟悉上机环境,进一步掌握语言的结构特点。

2.掌握线性表的顺序存储结构的定义及实现。

3.掌握线性表的链式存储结构——单链表的定义及实现。

4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。

5.掌握线性表在链式存储结构——单链表中的各种基本操作。

二、实验内容1.顺序线性表的建立、插入及删除。

2.链式线性表的建立、插入及删除。

三、实验步骤1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。

2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。

3.建立一个带头结点的单链表,结点的值域为整型数据。

要求将用户输入的数据按尾插入法来建立相应单链表。

四、程序主要语句及作用程序1的主要代码(附简要注释)public struct sequenlist{public const int MAXSIZE=1024; /*最大值为1024*/public elemtype[] vec;public int len; /* 顺序表的长度 */public sequenlist( int n){vec=new elemtype[MAXSIZE ];len = n;}};class Program{static void Main(string[] args){sequenlist list1 = new sequenlist(5);for (int i = 0; i < 5; i++){list1.vec[i] = i;}for (int i = 0; i < 5; i++){Console.Write("{0}---", list1.vec[i]) ;}Console.WriteLine("\n");Console.WriteLine("表长:{0}\n",list1.len );Console.ReadKey();}}程序2的主要代码(附简要注释)public void insertlist(int i, int x){if (len >= MAXSIZE)throw new Exception("上溢"); /*长度大于最大值则抛出异常*/if (i < 1 || i > len + 1)throw new Exception("位置");/插入位置小于1或大于len+1则抛出插入位置错误的异常for (int j = len; j >= i; j--)vec[j] = vec[j - 1]; //注意第j个元素存在数组下标为j-1处vec[i - 1] = x;len++;}};class Program{static void Main(string[] args){sequenlist list2 = new sequenlist(7);list2.vec[0] = 21;list2.vec[1] = 23;list2.vec[2] = 14;list2.vec[3] = 5;list2.vec[4] = 56;list2.vec[5] = 17;list2.vec[6] = 31;Console.Write("请输入第i个位置插入元素:");int loc =Convert.ToInt32( Console.ReadLine());Console.Write("请输入第{0}个位置插入的元素:", loc);int ele = Convert.ToInt32(Console.ReadLine());Console.WriteLine("插入前的线性表:");for (int i = 0; i < list2.len ; i++){Console.Write("{0}---", list2.vec[i]);}Console.WriteLine("\n");list2.insertlist(loc, ele);Console.WriteLine("插入后的线性表:");for (int i = 0; i < list2.len ; i++){Console.Write("{0}---", list2.vec[i]);}Console.WriteLine("\n");Console.ReadKey();}}程序3的主要代码(附简要注释)class Node{private int num;public int Num{set { num = value; }/输入值get { return num; }/获得值}private Node next;public Node Next{set { next = value; }get { return next; }}}class Pp{static void Main(string[] args){Node head;Node tempNode, tempNode1;int i;head = new Node();Console.WriteLine("输入六项数据:\n");Console.Write("输入第1项数据:");head.Num = Convert.ToInt32(Console.ReadLine());head.Next = null;tempNode = head;for (i = 1; i < 6; i++){tempNode1 = new Node();Console.Write("输入第{0}项数据:",i+1);tempNode1.Num = Convert.ToInt32(Console.ReadLine());/插入项转换为整形数值 tempNode1.Next = null;tempNode.Next = tempNode1;tempNode = tempNode.Next;}Console.WriteLine("线性表:");tempNode = head;for (i = 0; i < 6; i++){Console.Write("{0}", tempNode.Num);if (i < 5){Console.Write("--");}tempNode = tempNode.Next;}Console.ReadKey();}}五、程序运行结果截图程序1程序2程序3六、收获,体会及问题(写得越详细、越个性化、越真实越好,否则我不知道你做这个实验的心路历程,也就无法充分地判断你是否是独立完成的这个实验、你是否在做这个实验时进行了认真仔细地思考、通过这个实验你是否在实践能力上得到了提高)这次试验刚开始做时完全不知道从哪下手,才刚上了几节课,对于线性表、链式表都不是理解的很透彻,不知道用哪个软件编写程序。

数据结构实验报告

数据结构实验报告

数据结构实验报告一、实验目的数据结构是计算机科学中重要的基础课程,通过本次实验,旨在深入理解和掌握常见数据结构的基本概念、操作方法以及在实际问题中的应用。

具体目的包括:1、熟练掌握线性表(如顺序表、链表)的基本操作,如插入、删除、查找等。

2、理解栈和队列的特性,并能够实现其基本操作。

3、掌握树(二叉树、二叉搜索树)的遍历算法和基本操作。

4、学会使用图的数据结构,并实现图的遍历和相关算法。

二、实验环境本次实验使用的编程环境为具体编程环境名称,编程语言为具体编程语言名称。

三、实验内容及步骤(一)线性表的实现与操作1、顺序表的实现定义顺序表的数据结构,包括数组和表的长度等。

实现顺序表的初始化、插入、删除和查找操作。

2、链表的实现定义链表的节点结构,包含数据域和指针域。

实现链表的创建、插入、删除和查找操作。

(二)栈和队列的实现1、栈的实现使用数组或链表实现栈的数据结构。

实现栈的入栈、出栈和栈顶元素获取操作。

2、队列的实现采用循环队列的方式实现队列的数据结构。

完成队列的入队、出队和队头队尾元素获取操作。

(三)树的实现与遍历1、二叉树的创建以递归或迭代的方式创建二叉树。

2、二叉树的遍历实现前序遍历、中序遍历和后序遍历算法。

3、二叉搜索树的操作实现二叉搜索树的插入、删除和查找操作。

(四)图的实现与遍历1、图的表示使用邻接矩阵或邻接表来表示图的数据结构。

2、图的遍历实现深度优先遍历和广度优先遍历算法。

四、实验结果与分析(一)线性表1、顺序表插入操作在表尾进行时效率较高,在表头或中间位置插入时需要移动大量元素,时间复杂度较高。

删除操作同理,在表尾删除效率高,在表头或中间删除需要移动元素。

2、链表插入和删除操作只需修改指针,时间复杂度较低,但查找操作需要遍历链表,效率相对较低。

(二)栈和队列1、栈栈的特点是先进后出,适用于函数调用、表达式求值等场景。

入栈和出栈操作的时间复杂度均为 O(1)。

2、队列队列的特点是先进先出,常用于排队、任务调度等场景。

数据结构实验报告

数据结构实验报告

数据结构实验报告一、实验目的本实验旨在通过对数据结构的学习和实践,掌握基本的数据结构概念、原理及其应用,培养学生的问题分析与解决能力,提升编程实践能力。

二、实验背景数据结构是计算机科学中的重要基础,它研究数据的存储方式和组织形式,以及数据之间的关系和操作方法。

在软件开发过程中,合理选用和使用数据结构,能够提高算法效率,优化内存利用,提升软件系统的性能和稳定性。

三、实验内容本次实验主要涉及以下几个方面的内容:1.线性表的基本操作:包括线性表的创建、插入、删除、查找、修改等操作。

通过编程实现不同线性表的操作,掌握它们的原理和实现方法。

2.栈和队列的应用:栈和队列是常用的数据结构,通过实现栈和队列的基本操作,学会如何解决实际问题。

例如,利用栈实现括号匹配,利用队列实现银行排队等。

3.递归和回溯算法:递归和回溯是解决很多求解问题的常用方法。

通过编程实现递归和回溯算法,理解它们的思想和应用场景。

4.树和二叉树的遍历:学习树和二叉树的遍历方法,包括前序、中序和后序遍历。

通过编程实现这些遍历算法,加深对树结构的理解。

5.图的基本算法:学习图的基本存储结构和算法,包括图的遍历、最短路径、最小生成树等。

通过编程实现这些算法,掌握图的基本操作和应用。

四、实验过程1.具体实验内容安排:根据实验要求,准备好所需的编程环境和工具。

根据实验要求逐步完成实验任务,注意记录并整理实验过程中遇到的问题和解决方法。

2.实验数据采集和处理:对于每个实验任务,根据要求采集并整理测试数据,进行相应的数据处理和分析。

记录实验过程中的数据和结果。

3.实验结果展示和分析:将实验结果进行适当的展示,例如表格、图形等形式,分析实验结果的特点和规律。

4.实验总结与反思:总结实验过程和结果,回顾实验中的收获和不足,提出改进意见和建议。

五、实验结果与分析根据实验步骤和要求完成实验任务后,得到了相应的实验结果。

对于每个实验任务,根据实验结果进行适当的分析。

数据结构大作业实验报告要求范文

数据结构大作业实验报告要求范文

浙江工商大学计算机与信息工程学院数据结构实验大作业报告专业:班级:学号:姓名:指导教师:年月一、大作业报告内容包括以下几个部分⒈问题描述:(题目)⒉设计:⑴数据结构设计和核心算法设计描述;⑵主控及功能模块层次结构;⑶主要功能模块的输入、处理(算法框架描述)和输出;⑷功能模块之间的调用与被调用关系等。

⒊测试:测试范例,测试结果,测试结果的分析与讨论,测试过程中遇到的主要问题及所采用的解决措施。

⒋使用说明和作业小结:⑴使用说明主要描述如何使用你的程序以及使用时的主要事项;⑵在小结中说明程序的改进思想、经验和体会;⒌整理一份程序清单及运行示例的结果。

将以上各项文字材料及程序清单等装订成册,形成一个完整的报告。

题目从以下题目中任选一个,每人1个题目。

(一)试设计一个航空客运定票系统。

基本要求如下:1、每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。

2、系统能实现的操作和功能如下:1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。

若需要,可登记排队候补;3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

3、实现提示:两个客户名单可分别由线性表和队列实现。

为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。

由于预约人数无法预计,队列也应以链表作为存储结构。

数据结构实验一顺序表实验报告

数据结构实验一顺序表实验报告一、实验目的本次实验的主要目的是通过实现顺序表的基本操作,深入理解线性表的逻辑结构和存储结构,掌握顺序表的插入、删除、查找等操作的实现方法,提高编程能力和问题解决能力。

二、实验环境本次实验使用的编程语言为 C 语言,编程环境为 Visual Studio 2019。

三、实验原理顺序表是一种线性表的存储结构,它使用一组连续的存储单元依次存储线性表中的元素。

在顺序表中,元素的逻辑顺序与物理顺序是一致的。

顺序表的基本操作包括初始化、插入、删除、查找、遍历等。

在实现这些操作时,需要考虑顺序表的存储空间是否已满、插入和删除元素时元素的移动等问题。

四、实验内容(一)顺序表的定义```cdefine MAXSIZE 100 //定义顺序表的最大长度typedef struct {int dataMAXSIZE; //存储顺序表的元素int length; //顺序表的当前长度} SeqList;```(二)顺序表的初始化```cvoid InitList(SeqList L) {L>length = 0;}```(三)顺序表的插入操作```cint InsertList(SeqList L, int i, int e) {if (L>length == MAXSIZE) {//顺序表已满return 0;}if (i < 1 || i > L>length + 1) {//插入位置不合法return 0;}for (int j = L>length; j >= i; j) {//移动元素L>dataj = L>dataj 1;}L>datai 1 = e; //插入元素L>length++;return 1;}```(四)顺序表的删除操作```cint DeleteList(SeqList L, int i, int e) {if (L>length == 0) {//顺序表为空return 0;}if (i < 1 || i > L>length) {//删除位置不合法}e = L>datai 1; //取出被删除的元素for (int j = i; j < L>length; j++){//移动元素L>dataj 1 = L>dataj;}L>length;return 1;}```(五)顺序表的查找操作```cint SearchList(SeqList L, int e) {for (int i = 0; i < Llength; i++){if (Ldatai == e) {return i + 1;}}}```(六)顺序表的遍历操作```cvoid TraverseList(SeqList L) {for (int i = 0; i < Llength; i++){printf("%d ", Ldatai);}printf("\n");}```五、实验步骤1、打开 Visual Studio 2019,创建一个新的 C 语言项目。

《数据结构》课程实验报告格式

水电学院《数据结构》实验报告
实验一线性表的顺序存储结构
班级:学号:姓名:日期:
一、需求分析
1.程序的功能;
2.输入输出的要求;
3.测试数据。

二、程序设计基本思想、原理和算法描述
1.算法基本思想及原理
2.主要模块的伪码算法;
3.采用c语言定义相关的数据类型;
4.符号名说明
5.程序结构、主程序的流程及各程序模块之间的层次关系
6.画出函数的调用关系图。

7.编程环境说明
三、调试分析
1.调试中遇到的问题及对问题的解决方法;
2.算法的时间复杂度和空间复杂度。

四、使用说明及测试结果
1.程序文件组成;
2.程序使用说明;
3.测试结果分析;
4.程序的改进方向。

五、上机体会及建议
六、源程序(带注释)。

数据结构实验报告示例

说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及 各程序模块之间的层次(调用)关系。 三 详细设计
实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码 算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关 系。
四 使用说明、测试分析及结果 1、说明如何使用你编写的程序; 2、测试结果与分析; 3、调试过程中遇;
你在编程过程中花时多少? 多少时间在纸上设计? 多少时间上机输入和调试? 多少时间在思考问题? 遇到了哪些难题? 你是怎么克服的? 你的收获有哪些?
教师评语: 实验成绩:
指导教师签名: 批阅日期:
}
(四) 程序使用说明及测试结果
1. 程序使用说明
(1)
本程序的运行环境为VC6.0。
(2)
进入演示程序后即显示提示信息:
Enter the first code(m):
输入初始报数值
Enter the people number(n):
输入人数
enter the 1 code(data):
输入第一个人所持的密码
{
int i;
int j=0;
LNode *p;
while((a--)!=1)
{
for(i=1;i<=b;i++)
{
p=this;
this=this->next;
}
b=this->data;
str[j]=this->num;
p->next=this->next;
free(this);
j++;
}
str[j]=this->next->num;
{ int num; ElemType data; struct LNode *next; }LNode; LNode *head,*this,*new; int str[MAX]; new_code(int a); delete_code(int a,int b); main() { int m,n,i; printf("Enter the first code (m):"); scanf("%d",&m); printf("\nEnter the people number (n):");

数据结构实验报告模板(验证型)

学期:2010-2011学年第一学期指导教师:杨华莉成绩:实验一顺序表的基本操作一、实验目的1.掌握使用VC++6.0调试程序的基本方法;2.掌握线性表的顺序存储结构的类型定义;3.掌握顺序表的基本操作的实现,如:插入、删除、遍历、查找、排序、修改、合并等;4.掌握顺序表的应用。

二、实验要求1.认真阅读和掌握本实验的示例程序。

2.上机运行示例程序,打印出程序的运行结果,并作必要的说明。

3.对示例程序,按照对线性表的操作需要,在程序中至少添加2个顺序表的相关操作。

如:i.查找并显示分数在区间[a,b)的学生信息;ii.查找并显示最高分或最低分学生信息;iii.统计不及格或及格人数及所占比例;iv.将信息表按学号、姓名或分数升序或降序排列;v.按学号顺序进行数据元素的插入;vi.删除指定学号或姓名的学生信息;vii.修改某个学生的信息;viii.其它。

4.重新改写主函数(要求必需调用自己添加的操作),打印出文件清单(自己添加的函数、修改后的主函数和运行结果)。

5.对修改后的程序,分析每一个算法(函数)的时间复杂度。

6.根据上述要求撰写实验报告,并简要给出算法设计小结和心得。

三、实验环境1.台式计算机每人一台;2.软件:Visual C++6.0四、实验内容和实验结果一.示例程序运行结果及说明二.自己添加的新函数(至少2个),要求加必要的注释。

SqList Delete_SqList(SqList &L)//删除学生信息{Elemtype x;int i=0;int choice=DMenu();char name[25];int num,k;if(!L.length){printf("表为空,无法删除!");exit(0);}switch(choice){case 1: //按姓名删除printf("\n请输入要删除的学生的姓名\n");scanf("%s",&name);k=strcmp(name,L.data[i].name);//比较姓名if(k==0){x=L.data[i-1];for(int m=L.length-1;m>=i-1;--m)L.data[i-1]=L.data[i];--L.length;break;}case 2: //按学号删除printf("\n请输入要删除学生的学号\n");scanf("%d",&num);if(num==L.data[i].num){for(int m=L.length-1;m>=i-1;--m)L.data[i-1]=L.data[i];--L.length;break;}case 3:break;}return L;}void TongJi_SqList(SqList L)//统计信息表中学生的信息{int i;int choice=TMenu();//选择所要统计的方式的菜单switch(choice){case 1: for(i=0;i<L.length;i++)//统计男生信息if(L.data[i].sex=='m')PrintElem(L.data[i]);break;case 2: for(i=0;i<L.length;i++)//统计女生的信息if(L.data[i].sex=='f')PrintElem(L.data[i]);break;case 3: for(i=0;i<L.length;i++)//统计不及格的人if(L.data[i].score<60)printf(“不及格的为:”);PrintElem(L.data[i]);break;case 4: for(i=0;i<L.length;i++)//统计优秀的人if(L.data[i].score>90)printf(“分数在90分以上的为:”);PrintElem(L.data[i]);break;case 5: break;}}void PaiXu_SqList(SqList L)//排序{int i,j,k;int choice=PMenu();//选择菜单switch(choice){case 1: //按序号升序排列for(i=0;i<L.length;i++)for(j=0;j<L.length-i;j++)if(L.data[j].num>L.data[j+1].num){k=L.data[j].num;L.data[j].num=L.data[j+1].num; //冒泡法排序L.data[j+1].num=k;}for(j=0;j<L.length;j++)//输出排序结果PrintElem(L.data[j]);break;case 2: //按分数降序排列for(i=0;i<L.length;i++)for(j=0;j<L.length-i;j++)if(L.data[j].score<L.data[j+1].score){k=L.data[j].score;L.data[j].score=L.data[j+1].score;L.data[j+1].score=k;}for(j=0;j<L.length;j++)//输出结果PrintElem(L.data[j]);break;case 3: //按分数升序排列for(i=0;i<L.length;i++)for(j=0;j<L.length-i;j++)if(L.data[j].score>L.data[j].score){k=L.data[j].score;L.data[j].score=L.data[j+1].score;L.data[j+1].score=k;}for(j=0;j<L.length;j++)//输出排序结果PrintElem(L.data[j]);break;case 4: break;}}三.改写后的主函数(要求必需调用自己添加的操作)void main(){//通过文件input1.txt输入数据,结果输出到文件output1.txt //打开输入输出文件FILE *in,*out;if((in=fopen("input1.txt","r"))==NULL){ printf("cannot open infile\n");exit(0);}if((out=fopen("output1.txt","w"))==NULL){ printf("cannot open infile\n");exit(0);}int choice;SqList L;Init_SqList(L);//系统文件初始化,构造空表Lwhile(1){choice=Menu();switch(choice){case 1: Creat_SqList(L,in);//导入数据,根据文件input.txt读入的数据建立顺序表Lbreak;case 2: Traver_SqList(L);//查询,输出顺序表break;case 3: Insert_SqList(L);// 在顺序表L中插入一个新元素break;case 4: Delete_SqList(L);break;//删除元素case 5: TongJi_SqList(L);break;//统计case 6: PaiXu_SqList(L);break;//排序case 7: Cheng_SqList(L);break;//修改case 0: SaveList(L,out);fclose(in);fclose(out);exit(-1);break;//保存数据,并退出系统}getchar();}}四.改写后程序的运行结果。

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

实验报告要求
在每一次实验完成后,要提交相应的实验报告,包括以下几方面内容。
1.基本信息
基本信息是指实验人员的基本信息,包括:实验项目名称、实验类型、班级、
学号、姓名、实验日期。

2.问题描述
问题描述是对问题背景、问题内容、问题约束条件等进行的叙述。其主要任
务是弄清要解决的问题是什么,阐述问题的基本要求及应实现的功能,明确要完
成的任务,以及数据的输入、输出形式。

3.数据结构设计
通过对问题的分析,给出由具体语言描述的数据结构定义,并阐述定义理由。
4.算法设计
算法设计主要介绍本设计从整体上划分为几个模块,每个模块需要完成的功
能是什么给出功能(函数)说明,画出函数之间的调用关系图。就每一个函数,
给出算法思想以及伪代码的算法描述。

5. 抽象数据类型的设计
根据所设计的数据结构和函数接口,设计抽象数据类型。
6.界面设计
介绍提供给用户操作的界面及必要的使用说明。适当说明程序的使用流程。
7.运行、测试与分析
给出有代表性的测试用例,并加以简单的文字说明,注意程序运行要覆盖算
法的各种情况。
给出程序运行结果的截图,并分析程序的时间复杂度和空间复杂度。

8.实验收获及思考
主要指出算法的特点,在实现该实验基本要求的前提下,还可以进行哪些方
面的功能扩展,特别是重点说明实验最有价值的内容。上机实验后有哪些想解决、
但尚未解决的问题,在哪些方面需要进一步了解或得到帮助,以及编程实现实验
的感悟等内容。

附录:源代码
源程序要按照编写程序的规则来编写,结构须清晰。每个函数均需要在函数
头前注释说明该函数的简要功能,函数中的关键语句需添加注释。
实验报告样例
实验名称:学生基本信息管理
实验类型:设计性实验
班级:软件工程
学号:150
姓名:王一航

实验日期:问题描述
设计一个简单的管理系统,实现学生基本信息(学号、姓名、性别、入学时
间、入学成绩、专业、特长)的存储,以便查询、显示等。系统具备以下功能:
记录添加、记录删除、按学号查询、记录显示等。

2.数据结构设计
每个学生的基本信息含有多个属性,为此可根据学生信息建立结构体,如下:
typedef struct

{ int xh; 法设计
系统规定的功能设计的算法有:记录插入、记录删除、按学号查询及记录显
示。如果记录以交互方式创建,还将涉及创建算法。
(1)记录插入
因为表按学号有序存储,记录插入将按新记录的学号进行插入。算法如下。
setp 1:创建一新结点,输入新结点的数据,为了界面友好,可提供输入提
示。如:

s=new XsNode; 面设计
程序包含有多个功能,所以,采用菜单,以方便用户进行功能选择。菜单如
下:

5. 运行、测试与分析
(1)运行程序,显示菜单,如图所示。

欢迎使用本程序
1. 创建表
2. 插入新记录
3. 删除记录
4. 查询
5. 浏览记录
6. 退出
请选择操作
1 创建表
2 插入新纪录
3 删除记录
4 查询
5 浏览记录
6 退出

请选择相关操作 [ ]

请选择操作

图 启动界面
(2)按“1”创建表。根据提示,输入记录个数,并输入各条记录,插入过
程与插入记录类似。
(3)按“2”插入记录。根据提示输入记录内容,如图所示。

请选择操作
1 创建表
2 插入新纪录
3 删除记录
4 查询
5 浏览记录
6 退出

请选择相关操作 [ 2 ]

请选择操作

输入学号:50
输入姓名:陈抗抗
输入入学时间(年,月,日):2007 9 1
输入入学成绩:588
输入专业:软件工程
输入特长:赏车

图 记录插入界面
(4)按“3”,进行删除记录操作,如图所示。

请选择操作
1 创建表
2 插入新纪录
3 删除记录
4 查询
5 浏览记录
6 退出

请选择相关操作 [ 3 ]

请选择操作

请输入要删除的学生学号:53
删除成功!
按任意键继续

图 记录删除界面
根据提示,输入要删除记录的学号,若存在,显示删除存在;否则,显示不
存在,无法删除。
(5)按“4”,进行记录查找,如图所示。
请选择操作
1 创建表
2 插入新纪录
3 删除记录
4 查询
5 浏览记录
6 退出

请选择相关操作 [ 4 ]

请选择操作

请输入查询的学号:54
----------------查找成功,记录如下所示-------------
学号: 54
姓名: 郭锅
成绩: 580
入学时间:2007年9月1日
专业: 软件工程
特长: 才华横溢
请按任意键继续…

图 记录查找界面
根据提示,输入要查询学生的学号,若存在,显示该记录;否则,显示不存
在该学生。
(6)按“5”,进行记录浏览,如图所示。

请选择操作
1 创建表
2 插入新纪录
3 删除记录
4 查询
5 浏览记录
6 退出

请选择相关操作 [ 5 ]

请选择操作

--------------------------------------------------------------------------------------------------------
学号姓名成绩入学时间业特长
50陈抗抗5882007年9月1日软件工程赏车
49谢鹏鹏5802007年9月1日软件工程打篮球
52帅帅5802007年9月1日软件工程看书
53山山5802007年9月1日软件工程数学
54郭锅5802007年9月1日软件工程才华横溢
请按任意键继续…

图 记录浏览界面
(7)按“6”,退出程序。

6.实验收获及思考
给出调试中遇到的问题及解决的方法和过程。总结本次实验的收获及思考的
问题等。此处略。

相关文档
最新文档