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