#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#define OK 1
#define OVERFLOW -2
typedef 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 = 1; i < num; i++)
{
L->elem[current] = 0; //进过的洞为0
current = (current + i + 1) % L->listsize; //洞的顺序数(下标+1)加上每次间隔的洞数 求余数 用来循环顺序表
}
printf("\n兔子可能藏在如下洞中:");
for(i = 0; i < L->listsize; i++)
{
if(L->elem[i] == 1)
{
printf("\n此洞是%d号洞", i+1);//下标和洞的顺序注意!
find = 0;
}
}
//如果find等于1,就没有洞是为1的洞。
if(find)
{
printf("兔子无处藏身!");
}
return OK;
}
//实现狐狸逮老鼠功能
void main()
{
int n,num;
SqList L;
printf("请输入洞的个数 ");
scanf("%d",&n);
InitList_Sq(&L,n);
printf("请输入狐狸进出次数 ");
scanf("%d",&num);
findRabbit(&L,num);
}
综合实验1-狐狸逮兔子
最新推荐文章于 2020-03-29 14:18:30 发布