欢迎来到天天文库
浏览记录
ID:14918681
大小:53.00 KB
页数:4页
时间:2018-07-31
《线性表的反复查找问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《数据结构》实验报告一一、上机实验的问题:1、LIST_INIT_SIZE不被计算机程序所认可2、getchar()在程序中的作用,是否作用于运行结果中的“Pressanykeytocontiune”二、程序设计的基本思想,原理和算法描述:(包括程序的结构,数据结构,输入/输出设计,符号名说明等) 基本思想和原理:利用线性表的顺序存储方式和求余运算符的运用,将1000次进洞逐一与线性表中的相应元素对应:先运用for语句将线性表中的所有元素赋值为0,再运用for语句达到随着狐狸进入次数的增加和进入的洞口的改变,改变线
2、性表中相应元素的值的目的(用0标记进入的洞口,用1表示未进入的洞口,并分别赋值给每一个洞口相对应的线性表元素)。利用for语句遍历整个线性表,利用if语句挑选出所需线性表元素,最后再利用printf函数输出结果。算法描述:StatusInitList_Sq(SqList&L){//构造一个空的线性表LL.elem=(ElemType*)malloc(LISTSIZE*sizeof(ElemType));if(!L.elem)return(OVERFLOW);//存储分配失败L.length=0;//空表长度为0L.l
3、istsize=LISTSIZE;//初始存储容量returnOK;}//InitList_SqStatusWhere(SqList&L){//构造狐狸逮兔子函数inti,j=1;//i为所找次数,j为所找的洞口号,先初始所找洞口号为1for(j=1;j<=LISTSIZE;j++)L.elem[j]=0;//记未进入的洞为0,进入的洞为1,初始所有洞口为0L.elem[1]=1;//第一次进入洞口号为1for(i=2;i<=1000;i++){j=(j+i)%LISTSIZE;//第i次进入的洞口号L.elem[j
4、]=1;//标记进入的洞口为1}//第二次隔一个洞找,第三次隔两个洞找,以此类推,经过1000次printf("兔子可能的藏身洞口有:");for(j=1;j<=LISTSIZE;j++)if((*L).elem[j]==0)printf("第%d号洞",j);//实现结果的输出returnOK;} 三、源程序及注释:#include#include#defineOK1#defineOVERFLOW0typedefintStatus;typedefintElemType;
5、#defineLISTSIZE10//线性表存储空间的初始分配量typedefstruct{ElemType*elem;//存储空间基址intlength;//当前长度intlistsize;//当前分配的存储空间(以sizeof(ElemType)为单位)}SqList;StatusInitList_Sq(SqList*L){//构造一个空的线性表L(*L).elem=(ElemType*)malloc(LISTSIZE*sizeof(ElemType));if(!(*L).elem)return(OVERFLOW
6、);//存储分配失败(*L).length=0;//空表长度为0(*L).listsize=LISTSIZE;//初始存储容量returnOK;}//InitList_SqStatusWhere(SqList*L){//构造狐狸逮兔子函数inti,j=1;//i为所找次数,j为所找的洞口号,先初始所找洞口号为1for(j=1;j<=LISTSIZE;j++)(*L).elem[j]=0;//记未进入的洞为0,进入的洞为1,初始所有洞口为0(*L).elem[1]=1;//第一次进入洞口号为1for(i=2;i<=10
7、00;i++){j=(j+i)%LISTSIZE;//第i次进入的洞口号(*L).elem[j]=1;//标记进入的洞口为1}//第二次隔一个洞找,第三次隔两个洞找,以此类推,经过1000次printf("兔子可能的藏身洞口有:");for(j=1;j<=LISTSIZE;j++)if((*L).elem[j]==0)printf("第%d号洞",j);//实现结果的输出returnOK;}voidmain(){SqListL;InitList_Sq(&L);Where(&L);} 四、运行输出结果: 五、调
8、试和运行程序过程中产生的问题及采取的措施:1、产生的问题:将算法直接运用于C程序语言中,导致在调试时没错,运行时出错。 采取的措施:按照C语言的代码规则,将算法中的不符合C语言编程的代码进行修改,如:StatusInitList_Sq(SqList&L)修改为StatusInitList_Sq(SqList*L),将L.elem【】修改为(*
此文档下载收益归作者所有