实验任务书(2015) (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
0 实验要求 (2)
实验1 线性表的顺序存储结构 (3)
实验2 链表的应用 (6)
实验3 栈的应用 (9)
实验4 队列的应用 (10)
实验5 树的应用 (11)
实验6 图的应用 (12)
实验7 图的应用 (13)
实验8 查找与排序 (14)
0 实验要求
一、实验步骤
⒈问题分析
充分地分析和理解问题本身,弄清要求做什么,包括功能要求、性能要求、设计要求和约束以及基本数据特性,数据元素之间的关系等。
⒉数据结构设计
针对要求解决的问题,考虑各种可能的数据结构,并且力求从中找出最佳方案(必须连同算法一起考虑),确定主要的数据结构及全局变量。对引入的每种数据结构和全局变量要详细说明其功能、初值和操作特点。
⒊算法设计
算法设计分概要设计和详细设计。概要设计着重解决程序的模块设计问题,这包括考虑如何把被开发的问题程序自顶向下分解成若干顺序模块,并决定模块的接口,即模块间的相互关系以及模块之间的信息交换问题。详细设计则要决定每个模块内部的具体算法,包括输入、处理和输出,采用类C语言描述。
⒋测试用例设计
准备典型测试数据和测试方案,测试数据要有代表性、敏感性,测试方案包括模块测试和模块集成测试。
⒌上机调试
对程序进行编译,纠正程序中可能出现的语法错误。测试前,先运行一遍程序看看究竟将会发生什么,如果错误较多,则根据事先设计的测试方案并结合现场情况进行错误跟踪,包括打印执行路径或输出中间变量值等手段。
二、实验报告
每次实验结束后,均应撰写实验报告。实验报告应包括如下内容:
1、问题描述:简述题目要解决的问题是什么。
2、设计:概要设计采用抽象数据类型描述,详细设计包括存储结构的定义、主要操作算法设计等。用类C语言或用框图描述。
3、调试报告:调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。
4、运行结果。可以贴相应的运行结果截图。
5、算法分析与改进:算法的时间复杂度和空间复杂度分析;算法改进的设想。
6、经验和体会
所有实验做完后,上交上机实验源程序和相应的运行结果截图。源程序要加注释。如果题目规定了测试数据,则截图结果要包含这些测试数据和运行输出,当然还可以含有其它测试数据和运行输出(有时需要多组数据)。
三、实验学时
16学时
实验1 线性表的顺序存储结构
实验目的
1.熟悉C语言的上机环境,掌握使用VC环境上机调试线性表的基本方法;
2.掌握线性表的顺序存储结构及其线性表的基本操作:插入、删除、查找等。
3.掌握线性表合并等运算在顺序存储结构上的实现。
实验要求
1.认真阅读和掌握本实验的程序。
2.上机运行程序,观察程序的运行结果。
3.按照你对线性表的操作需要,重新改写主程序并运行。
实验内容(基础题必做,应用题、提高题可选)
1. 基础题:线性表基本操作的实现
这个程序中演示了顺序表的创建、插入、删除和查找,(1)请修改并记录运行结果;(2)按照你自己对线性表测试的需要,增加新的操作,重新改写主程序并记录运行结果。
#include
#include
//顺序表的定义
#define ListSize 100
typedef int ElemType;
typedef struct
{ ElemType *elem;/*存放表元素的空间基地址*/
int length; /*当前的表长度*/
int listsize; /*能容纳的最大元素个数*/
}SeqList;
void CreateList(SeqList &L,int n);
void PrintList(SeqList L,int n);
int LocateList(SeqList L,int x);
void InsertList(SeqList &L,int x,int i);
void DeleteList(SeqList &L,int i);
void main()
{
SeqList L;
int i,x;
int n=10; /*THE LENGTH OF LIST*/
L.length=0;
clrscr();
CreateList(L,n); /*CREATE THE LIST*/
PrintList(L,n); /*PRINT THE LIST*/
printf("INPUT THE SEARCH ELEMENT");
scanf("%d",&x);
i=LocateList(L,x);
printf("the search position is %d\n",i); /*顺序表查找*/ printf("input the position of insert:\n");
scanf("%d",&i);
printf("input the value of insert\n");
scanf("%d",&x);
InsertList(L,x,i); /*顺序表插入*/
PrintList(L,n); /*打印顺序表*/
printf("input the position of delete\n");
scanf("%d",&i);
DeleteList(L,i); /*顺序表删除*/
PrintList(L,n);
getch();/*打印顺序表*/
}
/*顺序表的建立:*/
void CreateList(SeqList &L,int n)
{
L. elem =(ElemType *)malloc(ListSize *sizeof(ElemType));
if(!L.elem) exit(0);
L.listsize= ListSize;
int i;
printf("please input n numbers\n");
for(i=1;i<=n;i++)
{
scanf("%d",&L. elem [i]);
}
L.length=n;
}
/*顺序表的打印:*/
void PrintList(SeqList L,int n)
{int i;
printf("the sqlist is\n");
for(i=1;i<=n;i++)
printf("%d ",L.elem [i]);
}
/*顺序表的查找:*/
int LocateList(SeqList L,int x)
{int i;
for(i=1;i<=10;i++)
if((L. elem [i])==x) return(i);
else return(0);
}
/*顺序表的插入:*/