二分查找,代码已写好了,无异常,运行时报内存异常

二分查找,代码已写好了,无错误,运行时报内存错误
二分查找,代码已写好了,无错误,运行时报内存错误

题是 在1,2,3,4,5,6,7,8,9,10中找9的位置

代码如下:


#include<stdio.h>
#define MAXL 100
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{
KeyType key;
InfoType data;
}NodeType;
typedef NodeType SeqList[MAXL];
int BinSearch(SeqList R,int n,KeyType k)
{
int low=0,high=n-1,mid,count=0;
while(low<=high)
{
mid=(low+high)/2;
printf("第%n次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,mid,R[mid].key);
if(R[mid].key==k)
return mid;
if(R[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}
void main()
{
SeqList R;
KeyType k=9;
int a[]={1,2,3,4,5,6,7,8,9,10},i,n=10;
for(i=0;i<n;i++)
R[i].key=a[i];  
printf("\n");
if((i=BinSearch(R,n,k))!=-1)
printf("\n元素%d的位置是%d\n",k,i);
else
printf("\n元素%d不在表中\n",k);
printf("\n");
}


------解决方案--------------------
将printf("第%n次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,mid,R[mid].key);
改为printf("第%d次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,mid,R[mid].key);