1、 - 1 - 课程设计报告课程设计报告 题 目: 算法设计与实践 院 系: 信息学院 专 业: 计算机科学与技术专业(软件方向) 学 号: 姓 名: 指导教师: 完成日期: 2013 年 7 月 14 日 - 2 - 目录目录 实验一:顺序表操作顺序表操作3 抽象数据数据类型抽象数据数据类型.3 源代码源代码.4 测试结果测试结果.9 实验小结实验小结.9 实验二:二叉排序树的操作二叉排序树的操作10 抽象数据数据类型抽象数据数据类型.10 源代码源代码.11 测试结果测试结果.17 实验小结实验小结.17 实验三:无向图的操作无向图的操作18 抽象数据数据类型抽象数据数据类型.18 源代码源
2、代码.19 测试结果测试结果.26 实验小结实验小结.26 实验四:有向图的操作有向图的操作27 抽象数据数据类型抽象数据数据类型.27 源代码源代码.27 测试结果测试结果.34 实验小结实验小结.34 实验五:哈希表的操作哈希表的操作35 抽象数据数据类型抽象数据数据类型.35 源代码源代码.35 测试结果测试结果.37 实验小结实验小结.37 参考文献参考文献38 - 3 - 一一 顺序表操作顺序表操作 (1)创建顺序表;)创建顺序表; (2)顺序表进行顺序查找;)顺序表进行顺序查找; (3)顺序表进行排序(排序的方法可以)顺序表进行排序(排序的方法可以是简单的,也可以是先进的) ;是简
3、单的,也可以是先进的) ; (4)顺序表进行折半查找。)顺序表进行折半查找。 设计方案(抽象数据类型)设计方案(抽象数据类型) ADT StaticSearchTable 数据对象数据对象 D:销售单集合:销售单集合 数据关系数据关系 R:线性表:线性表 基本操作基本操作 P: - 4 - CreateTable( char name30; SDate; typedef struct - 5 - SDate *elem; int length; STable; int CreatTable(STable *L,int n) int i; if(nelem=(SDate *)malloc(n+1
4、)*sizeof(SDate); L-length=n; for(i=1;ielemi.key); getchar(); gets(L-elemi.name); return OK; void DestroyTable(STable *L) if(L-elem=NULL) return; free(L-elem); printf(“n成功释放静态查找表成功释放静态查找表n“); int SearchTable(STable L,int key) int i; L.elem0.key=key; - 6 - for(i=L.length;L.elemi.key!=key;i-) ; return
5、i; void SortTable(STable *L) int i,j; for(i=2;ilength;i+) if(L-elemi.keyelemi-1.key) L-elem0=L-elemi; L-elemi=L-elemi-1; for(j=i-2;L-elem0.keyelemj.key;j-) L-elemj+1=L-elemj; L-elemj+1=L-elem0; void ShowTable(STable L) int i; for(i=1;ilchild,key,T,p); else return SearchBST(T-rchild,key,T,p); - 12 - int InsertBST(BiTree *T,int n) BiT