综合实验1-狐狸逮兔子

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

你可能感兴趣的:(山师通信大二数据结构实验课,数据结构)