欢迎来到天天文库
浏览记录
ID:51767613
大小:58.50 KB
页数:15页
时间:2020-03-15
《数据结构实验题参考答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、【实验题】1.狐狸逮兔子围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?(提示:这实际上是一个反复查找线性表的过程。)【数据描述】定义一个顺序表,用具有10个元素顺序表来表示这10个洞。每个元素分别表示围着山顶的一个洞,下标为洞的编号。#define LIST_INIT_SIZE
2、 10 //线性表存储空间的初始分配量typedef struct { ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)}SqList;【算法描述】status InitList_Sq(SqList &L) { //构造一个线性表L L.elem=(ElemType )malloc(LIST_INIT_SIZE*sizeof(ElemType)); I
3、f(!L.elem) return OVERFLOW;//存储分配失败 L.length=0; //空表长度为0L.listsize=LIST_INIT_SIZE; //初始存储容量 return OK;} //InitList_Sqstatus Rabbit(SqList &L) { //构造狐狸逮兔子函数 int current=0; //定义一个当前洞口号的记数器,初始位置为第一个洞口 for(i=0;i4、L.elem[i]=1;//给每个洞作标记为1,表示狐狸未进之洞 L.elem[LIST_INIT_SIZE-1]=L.elem[0]=0;//首先进入第一个洞,标记进过的洞为0。 for(i=2;i<=1000;i++){ current=(current+i)%LIST_INIT_SIZE;//实现顺序表的循环引用 L.elem[i]=0;// 标记进过的洞为0}//第二次隔1个洞找,第三次隔2个洞找,以后如此类推,经过一千次 printf("兔子可能藏在如下的洞中:") f5、or(i=0;i#include #define OK 1#define OVERFLOW -2typedef int status;typedef int ElemType;#define LIST_INIT_SIZE 10 /*线性表存储空间的6、初始分配量 */typedef struct { ElemType *elem; /* 存储空间基址 */ int length; /* 当前长度 */ int listsize; /*当前分配的存储容量(以sizeof(ElemType)为单位)*/}SqList;status InitList_Sq(SqList *L){ /*构造一个线性表L */ (*L).elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));7、 if(!((*L).elem)) return OVERFLOW; /* 存储分配失败 */ (*L).length=0; /*空表长度为0 */(*L).listsize=LIST_INIT_SIZE; /*初始存储容量 */ return OK;} /*InitList_Sq */status Rabbit(SqList *L){ /*构造狐狸逮兔子函数 */ int i,current=0; /*定义一个当前洞口号的记数器,初始位置为第一个洞口*/ for(i=8、0;i
4、L.elem[i]=1;//给每个洞作标记为1,表示狐狸未进之洞 L.elem[LIST_INIT_SIZE-1]=L.elem[0]=0;//首先进入第一个洞,标记进过的洞为0。 for(i=2;i<=1000;i++){ current=(current+i)%LIST_INIT_SIZE;//实现顺序表的循环引用 L.elem[i]=0;// 标记进过的洞为0}//第二次隔1个洞找,第三次隔2个洞找,以后如此类推,经过一千次 printf("兔子可能藏在如下的洞中:") f
5、or(i=0;i#include #define OK 1#define OVERFLOW -2typedef int status;typedef int ElemType;#define LIST_INIT_SIZE 10 /*线性表存储空间的
6、初始分配量 */typedef struct { ElemType *elem; /* 存储空间基址 */ int length; /* 当前长度 */ int listsize; /*当前分配的存储容量(以sizeof(ElemType)为单位)*/}SqList;status InitList_Sq(SqList *L){ /*构造一个线性表L */ (*L).elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
7、 if(!((*L).elem)) return OVERFLOW; /* 存储分配失败 */ (*L).length=0; /*空表长度为0 */(*L).listsize=LIST_INIT_SIZE; /*初始存储容量 */ return OK;} /*InitList_Sq */status Rabbit(SqList *L){ /*构造狐狸逮兔子函数 */ int i,current=0; /*定义一个当前洞口号的记数器,初始位置为第一个洞口*/ for(i=
8、0;i
此文档下载收益归作者所有