主题:[讨论]请问这个程序怎么了,要交的作业,求助!!!!
#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 10
#define FALSE 0
#define TRUE 1
typedef struct
{ int key;
int value;
}DicElement;
typedef struct
{ DicElement element[MAXNUM];
int n;
}SeqDictionary;
int binarySearch(SeqDictionary *pdic,int key,int *position) //2分法
{
int low,mid,high;
low=0;high=pdic->n-1;
while(low<=high)
{
mid=(low+high)/2;
if(pdic->element[mid].key==key)
{
*position=mid;
return(TRUE);
}
else if(pdic->element[mid].key>key)
high=mid-1;
else low=mid+1;
}
*position=low;
return(FALSE);
}
int insert_seq(SeqDictionary *palist,int x) //插入数据
{
int q;
for(q=palist->n-1;q>0 && palist->element[q].key>x;q--)
{
palist->element[q+1].key=palist->element[q].key;
}
palist->element[q].key=x;
palist->n=palist->n+1;
return(TRUE);
}
void main()
{
int i,f=0,e,r,x=0,h,u=0;
SeqDictionary KEY;
printf("请输入数据的个数:");
scanf("%d",&KEY.n);
printf("请输入数据:\n");
for(i=0;i<KEY.n;i++)
{
scanf("%d",&KEY.element[i].key);
//printf("请输入地%d个关键码的值:",i+1);
//scanf("%d",&KEY.element[i].value);
}
printf("请输入要查的关键码:");
scanf("%d",&x);
printf("结果是:");
f=binarySearch(&KEY,x,&h);
printf("%d\n",f);
printf("要插入数据请按1:");
scanf("%d",e);
if(e==1)
{printf("请输入要插入的数据:");
scanf("%d",r);
insert_seq(&KEY,r);
printf("请输入要查的关键码:");
scanf("%d",&x);
printf("结果是:");
f=binarySearch(&KEY,x,&h);
printf("%d\n",f);
}
}
这个程序调试的时候是没有错的,但运行到某一步的时候就出现错了,检查好久都不懂那里错,希望高手帮忙解决一下,不盛感激~~~~~
#include<stdlib.h>
#define MAXNUM 10
#define FALSE 0
#define TRUE 1
typedef struct
{ int key;
int value;
}DicElement;
typedef struct
{ DicElement element[MAXNUM];
int n;
}SeqDictionary;
int binarySearch(SeqDictionary *pdic,int key,int *position) //2分法
{
int low,mid,high;
low=0;high=pdic->n-1;
while(low<=high)
{
mid=(low+high)/2;
if(pdic->element[mid].key==key)
{
*position=mid;
return(TRUE);
}
else if(pdic->element[mid].key>key)
high=mid-1;
else low=mid+1;
}
*position=low;
return(FALSE);
}
int insert_seq(SeqDictionary *palist,int x) //插入数据
{
int q;
for(q=palist->n-1;q>0 && palist->element[q].key>x;q--)
{
palist->element[q+1].key=palist->element[q].key;
}
palist->element[q].key=x;
palist->n=palist->n+1;
return(TRUE);
}
void main()
{
int i,f=0,e,r,x=0,h,u=0;
SeqDictionary KEY;
printf("请输入数据的个数:");
scanf("%d",&KEY.n);
printf("请输入数据:\n");
for(i=0;i<KEY.n;i++)
{
scanf("%d",&KEY.element[i].key);
//printf("请输入地%d个关键码的值:",i+1);
//scanf("%d",&KEY.element[i].value);
}
printf("请输入要查的关键码:");
scanf("%d",&x);
printf("结果是:");
f=binarySearch(&KEY,x,&h);
printf("%d\n",f);
printf("要插入数据请按1:");
scanf("%d",e);
if(e==1)
{printf("请输入要插入的数据:");
scanf("%d",r);
insert_seq(&KEY,r);
printf("请输入要查的关键码:");
scanf("%d",&x);
printf("结果是:");
f=binarySearch(&KEY,x,&h);
printf("%d\n",f);
}
}
这个程序调试的时候是没有错的,但运行到某一步的时候就出现错了,检查好久都不懂那里错,希望高手帮忙解决一下,不盛感激~~~~~