综合实验1-狐狸逮兔子

#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);  
}

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值