1、序号实验项目编号实验名称学时必做选做学分数实验类型内容提要基本操作验证综合设计1抽象数据类型的表示与实现2线性表实验4线性表的存储实现及有关应用3栈和队列实验栈和队列的基本操作及其实现,以及典型应用举例稀疏矩阵实验稀疏矩阵的压缩存储5树和二叉树实验树的两种种存储结构,及各种操作的算法实现(建立、遍历、线索化、最优二叉树)6图及其应用实验图的两种基本存储结构,及各种操作的算法实现(建立、遍历、图的典型应用)7查找和排序实验各种基本的查找和排序算法及其实现分析四、实验内容安排:实验一 抽象数据类型的表示与实现( 验证性实验 2 学时)1.目的要求:1) 熟悉类C语言的描述方法,学会将类C语言描述的
2、算法转换为C源程序实现;2) 理解抽象数据类型的定义,编写完整的程序实现一个抽象数据类型(如三元组)。3) 认真阅读和掌握本实验的参考程序,上机运行程序,保存和打印出程序的运行结果,并结合程序进行分析。2. 实验内容:1) 编程实现抽象数据类型三元组的定义、存储、基本操作(最大值、最小值、平均值等的求解),并设计一个主菜单完成各个功能的调用。Main.cpp#includeopretation.hstdio.hvoid main() Triplet T; init(T); operation.h#ifndef xxxx#define xxxx#define TRUE 1#define FALS
3、E 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef ElemType *Triplet;Status InitTriplet(Triplet &T); /构造并赋值Status DestroyTriplet(Triplet & /销毁Status Get(Triplet T,int i,ElemType &e); /返回第i的值Status Put(Triplet &T,int i,ElemType e); /改
4、变第i的值Status IsAscending(Triplet T); /若为升序,则返回1,否返回0Status IsDescending(Triplet T); /若为降序,则返回1,否返回0Status Max(Triplet T,ElemType & /返回最大值Status Min(Triplet T,ElemType & /返回最小值Status init(Triplet T);#endif Operatation.hhan shu.hstdlib.hStatus init(Triplet T) int i,e; char choice; printf(1.InitTriplet
5、构造并赋值n);2.DestroyTriplet 销毁n3.Get 返回第i的值n4.Put 改变第i的值n5.IsAscending 若为升序,则返回1,否返回0n6.IsDescending 若为降序,则返回1,否返回0n7.Max 返回最大值n8.Min 返回最小值n请输入你所选择的功能的序号: fflush(stdin); scanf(%c,&choice); switch(choice) case 1: InitTriplet(T); break;2 DestroyTriplet(T); break; case3 printf(请输入您想显示的数的位数:%di); Get(T,i,e
6、);4请输入您想改变的数的位数:请输入您想改成的整数: scanf( Put(T,i,e);5 IsAscending(T);6 IsDescending(T);7 Max(T,e);8 Min(T,e); default: 请重新选择:/选择序号输入错误时,提示重新选择 return 0;T)/构造并赋值 int v1,v2,v3;请输入三个整数:%d%d%dv1,&v2,&v3); T=(ElemType *)malloc(3 *sizeof(ElemType);/分配3个元素的储存空间 if(!T)exit(OVERFLOW);/分配空间失败 T0=v1; T1=v2; T2=v3; g
7、etchar(); system(CLS/清屏 return OK;T)/销毁 free(T); T=NULL;e)/返回第i的值 if(i3) return ERROR; e=Ti-1;当前位的数值为:,e);T,int i,ElemType e)/改变第i的值当位目前的数值为:%dn,Ti-1); Ti-1=e;修改后的结果为:Status IsAscending(Triplet T)/若为升序,则返回1,否返回0 int x;若为升序,则显示1,否则显示0n x=(T0=T1) & (T1 (T1e)/返回最大值 e=(T0=T1?(T0=T2?T0:T2):(T1T1:T2);最大值为
8、: return OK;e)/返回最小值 e=(T0(T0(T1最小值为:3.主要仪器设备及药品2) PC机3) Turbo C 2.0 或Visual C+实验二 线性表实验( 验证性实验 4 学时)1) 熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;2)以线性表的各种操作(建立、插入、删除等)的实现为重点;3)通过本次实习帮助学生加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。4) 认真阅读和掌握本实验的参考程序,上机运行本程序, 保存和打印出程序的运行结果,并结合程序进行分析。按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果
9、。3. 实验内容:1) 编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。顺序存储: main.cpp#include #include Sqlist L;1. Initlist 创建n2. ListInsert 插入n3. ListDelete 删除n4. Serch 查找n5. exit 结束n while(1)nx); switch(x) case 1: Initlist(L); /创建 break; case 2: printf(请输入您想插入的数字 e= scanf( ListInsert(L,e); /插入 brea
10、k; case 3: ListDelete(L,e);/删除 case 4: Serch(L,e);/查找 case 5: exit(OVERFLOW);/结束 default: #define listinitsize 100#define listincrement 10typedef struct ElemType *elem; int length; int listsize;Sqlist;Status Initlist(Sqlist &L);/创建Status ListInsert(Sqlist &L,ElemType e);/插入Status ListDelete(Sqlist &
11、L,ElemType &Status Serch(Sqlist L,ElemType & Opretation.hinit.hL)/创建 int i; L.elem=(ElemType *)malloc(listinitsize * sizeof(ElemType);L.elem) exit(OVERFLOW); L.length=0; L.listsize=listinitsize; L.elem0=1; L.elem1=2; L.elem2=3; L.elem3=4; L.elem4=5;已存数据为 : for(i=0;i=L.listsize) newbase=(ElemType *)r
12、ealloc(L.elem,(L.listsize+listincrement)*sizeof(ElemType); if(!newbase) L.elem=newbase; L.listsize+=listincrement; q=&(L.elemi-1); for(p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p; *q=e; +L.length; /printf(%dn ,L.length); for(j=0;jL.length;j+),L.elemj);e)/删除请输入您想删除的位置 i= if(iL.length) p=& e=*p;删除的数为 %d n
13、 q=L.elem+L.length-1; for(+p;p+p) *(p-1)=*p; -L.length;%d ne)/查找请输入您想查找的位置 i= e=L.elemi-1;查找结果 e= %dn链式存储: Main.cpp#include LinkList L; int i,e,n; int choi;主菜单:1.Create 构造并赋值n2.Insert 插入n3.Delete 删除n4.Serch 查找n5.Put 显示所有数据n6.exit 退出系统n请输入您选择的功能 choi); switch(choi) case 1:输入要写入的元素个数:n); GreateList_L(
14、L,n);请输入要插入的位置:请输入要插入的数: ListInsert_L(L,i,e); n+;/插入增加一个请输入要删除的位置n ListDelete_L(L,i,e); n-;/删除减少一个请输入你想查询的数的位置n GetElem_L(L,i,e); case 5:所有数据为: n Put_L(L,n); case 6: exit(ERROR); default:/ Opretation.cppStatus GreateList_L(LinkList &L,int n)/创建 LinkList p,q; L=(LinkList)malloc(sizeof(LNode); p=L;请输入您想输入的数值
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1