(2013-4-21)数据结构实验三:狐狸逮兔问题(方法一:顺序表实现)

来源:互联网 发布:笑笑淘宝外设店 编辑:程序博客网 时间:2024/05/16 07:02
/*问题描述:围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:"可以,但必须找到我,我就藏身于这十个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,以后如此类推,次数不限。"但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?*/#include<stdio.h>#include<stdlib.h>#define OK 1#define OVERFLOW -2typedef int status;typedef int ElemType;typedef struct{ElemType *elem;int length;int listsize;}SqList;//构造一个线性表status InitList_Sq(SqList *L,int n){L->elem = (ElemType*)malloc(n*sizeof(ElemType));if(!(L->elem))return OVERFLOW;L->length = 0;L->listsize = n;return OK;}//狐狸逮兔子函数status findRabbit(SqList *L,int num){int i, current = 0,find = 1;for(i = 0; i < L->listsize; i++){L->elem[i] = 1;//标记未进过的洞为1}for(i = 0; i < num; i++){L->elem[current] = 0;//标记进过的洞为0current = (current + i + 2) % L->listsize;//实现顺序表的循环引用}printf("\n兔子可能藏在如下洞中:");for(i = 0; i < L->listsize; i++){if((*L).elem[i] == 1){printf("\n此洞是%d号洞", i+1);find = 0;}}if(find){printf("兔子无处藏身!");}return OK;}void main(){int n,num;SqList L;printf("请输入洞的个数n = ");scanf("%d",&n);InitList_Sq(&L,n);printf("请输入狐狸进出次数num = ");scanf("%d",&num);findRabbit(&L,num);}

原创粉丝点击