资源描述:
《单向环表实现约瑟夫环》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《数据结构与算法设计》实验报告——实验1(选作)学院:自动化学院班级:自动化2班学号:1320110130姓名:赵帅一、实验目的:进一步加强对抽象数据类型的理解;掌握对顺序表的各种操作;二、实验内容归并顺序表。三、程序设计1、概要设计:(说明程序中用到的抽象数据类型定义,宏定义,主程序的流程以及各个程序模块之间的调用关系,给出主要流程图)抽象数据类型定义:ADTList{数据对象:D={ai
2、ai∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={
3、ai-1,ai∈D,i=1,2,…,n}基本操作:initlist_Sq(
4、SqList&L)操作结果:构造一个空的线性表L。 ListEmpty(L) 初始条件:线性表L已存在。 操作结果:若L为空表,则返回TRUE,否则返回FALSE。 ListInsert_Sq(SqList*L,inti,ElemTypee)初始条件:线性表L已存在。 操作结果:在第i个位置上插入一个元素。 Print_Sq(SqListL)初始条件:线性表已存在。操作结果:输出顺序表。 }ADTList宏定义:#defineLength10#defineLISTINCREMENT10#defineTRU
5、E1#defineFALSE0#defineOK1#defineERROR-1#defineOVERFLOW-2typedefintStatus;typedefintElemType;流程图: 四、程序调试分析(程序运行中遇到的问题与改正措施,以及对程序调试的体会与收获)在c的环境下运行了程序,应该在c++的文件里运行;声明变量i,在第一次使用后没有重新赋值为零,直接作为下次输入数据时的变量;没有搞明白引用的关系;五、用户使用说明(说明如何使用你的程序,给出操作步骤)双击应用程序,显示器上出现“请输入按升序排列的整数序列La=”时,输入用户想要输入的
6、数据后并输入0做为结束标记,按“enter”结束;显示器上出现“请输入按升序排列的整数序列Lb=”时,输入用户想要输入的数据并输入0做为结束标记,按“enter”结束。即可得到想要的结果。六、程序运行结果(列出测试结果,包括输入和输出,最好给出2个测试结果)1,请输入按升序排列的整数序列La=34560请输入按升序排列的整数序列Lb=56780合并后的顺序表为:3456781,2请输入按升序排列的整数序列La=1234567890请输入按升序排列的整数序列Lb=234540合并后的顺序表为:123456789七、程序清单(要求给函数加上注释)/*顺序表
7、的归并操作*/#include#include#include#include#defineLength10#defineLISTINCREMENT10#defineTRUE1#defineFALSE0#defineOK1#defineERROR-1#defineOVERFLOW-2typedefintStatus;typedefintElemType;typedefstructlineorder{int*elem;intlength;intlistsize;}SqList
8、;Statusinitlist_Sq(SqList&L)/*初始化顺序表*/{L.elem=(ElemType*)malloc(sizeof(ElemType)*Length);if(!L.elem)exit(OVERFLOW);L.listsize=Length;L.length=0;returnOK;}Statuslistempty_Sq(SqListc)/*测试顺序表是否为空*/{if(c.length!=0)return(FALSE);return(TRUE);}StatusListInsert_Sq(SqList*L,inti,ElemTyp
9、ee)/*在第i个位置上插入一个元素*/{intj,*newbase;if(i<1
10、
11、i>L->length+1)returnERROR;if(L->length>=L->listsize){newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)exit(OVERFLOW);L->elem=newbase;L->listsize+=LISTINCREMENT;}for(j=L->length;j>=i;--j)L->ele
12、m[j]=L->elem[j-1];L->elem[j]=e;++L->length;retu