《数据结构实验报告实验一.doc》由会员分享,可在线阅读,更多相关《数据结构实验报告实验一.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验题目班级 雷电121 姓名 邹德培 学号 日期 2013-10-17 一、 需求分析1 程序的功能 建造一个顺序线性表,对线性表进行操作,具备任意选择删除、插入、查找数据元素的功能。2 输入输出的要求输入一维数组,且不超过100个;输出程序要求的值,等数据。二、 概要设计1 本程序所用的抽象数据类型的定义typedef structDataType itemsLISTSIZE;int length;SqList;2 主程序的流程及各程序模块之间的层次关系 先定义一个顺序表,结构体里的一位数组为顺序表内容,然后调用int InitList(SqList *L)初始化顺序表,然后已键盘输入的形
2、式输入一组一维数组,保存到顺序表里,次数组以-222作为结束符号,然后调用int TraverseList(SqList L)遍历次顺序表,在主函数里实行do-while在里面进行意选择删除、插入、查找数据元素的功能。 删除功能调用int ListInsertt(SqList *L),int ListInsertt(SqList *L)又调用int ListDelete(SqList *L),为嵌套调用。插入功能 调用int ListInsert(SqList *L,int pos,DataType item)此函数。查找功能 调用int Find(SqList L);在以上子函数中要用到in
3、t ListEmpty(SqList L)判空函数。三、 详细设计typedef struct/数据的结构体DataType itemsLISTSIZE;int length;SqList;不是回文是回文输入数组开始生成队栈指针比较字符串大小输入字符串函数的调用关系图入队并检测在出栈另存字符串出队入栈四、 调试分析1 调试中遇到的问题及对问题的解决方法调试中用错误提示功能进行改错,根据逻辑思路进行改错。2 算法的时间复杂度和空间复杂度。五、 源程序 #include#define LISTSIZE 100typedef int DataType;typedef struct/定义顺序结构体Da
4、taType itemsLISTSIZE;int length;SqList;int InitList(SqList *L)/*初始化顺序表*/*L为指向顺序表的指针L-length=0;return 1;int ListEmpty(SqList L)/*判空表*/if (L.lengthlength=LISTSIZE)printf(顺序表已满,无法进行插入操作!);return 0;if (pos L-length)printf(插入位置不合法,其取值范围应该是1,%d,L-length);return 0;for (i=L-length-1;i=pos-1;i-)/*插入位置后的数据后移*
5、/L-itemsi+1=L-itemsi;L-itemspos-1=item;L-length+; return 1;int TraverseList(SqList L)/*遍历*/int i;for (i=0;iL.length;i+) printf(%dt,L.itemsi);printf(n);return 1;int ListDelete(SqList *L)/*删除*/int pos,i,item;printf(请输入要删除数据的位置:n); scanf(%d,&pos); if(ListEmpty(*L)printf(顺序表为空,无法进行删除操作!);return 0;if(pos
6、L-length)printf(删除位置不合法,其取值范围是1,%d,L-length);return 0;item=L-itemspos-1;for (i=pos;ilength;i+)/删除元素前移L-itemsi-1=L-itemsi;L-length-;return 1;int ListInsertt(SqList *L)/*选择插入*/int pos,item;printf(请输入要插入的数据:n);scanf(%d,&item);printf(请输入要插入的位置:n);scanf(%d,&pos);if (!ListInsert(L,pos,item) return 0;elseT
7、raverseList(*L);return 1;int Find(SqList L)/*查找*/int item,pos=0;printf(请输入要查找的数据:n);scanf(%d,&item);if (ListEmpty(L)printf(顺序表为空,无法进行查找操作!);return 0;while(posL.length & L.itemspos!=item) pos+;if (pos L.length)printf(查找位置是:%dn,pos+1);return 1;else printf(没有这个数!n);return 0;int main(void)int i,op,kk=0;
8、 SqList LL;InitList(&LL);printf(请输入一组整数作为顺序表内容(以-222结束):n);for (i=0;iLISTSIZE;i+)scanf(%d,&LL.itemsi);if(LL.itemsi=-222)LL.length=i;break;if (TraverseList(LL)!=1)printf(n运行错误n);return 0;doprintf(n 选择菜单 n);printf(-);printf(n (1)设置删除.);printf(n (2)设置插入.);printf(n (3)设置查找.);printf(n (0)退出程序.);printf(n请选择(1,2,3,0):);scanf(%d,&op);if (op3) continue;switch(op)case 1: ListDelete(&LL);TraverseList(LL);break;case 2: ListInsertt(&LL);break;case 3: Find(LL);TraverseList(LL);break;case 0: return 0;default :break;while(1);return 0;六、 使用说明及测试结果根据提示输入,一维数组以-222为结束。然后根据你的需要进行选择功能。测试结果: