我的C++程序出错 高手们帮帮忙吧 急急急!!!

2024-12-18 20:23:35
推荐回答(5个)
回答1:

#include
#include
#define MAXSIZE 100
#define KEYTYPE int
typedef struct
{
int key;
}RECNODE;

int b,t;
int MakeList(RECNODE *r)
{
int j,k;
printf("\n请输入初始数据(每个数据以空格隔开,-1结束): ");
k=0;
scanf("%d",&j);
while(j!=-1)
{
k++;
r[k].key=j;//这里!这里!这里!这里!这里!这里的r改为r[k]
scanf("%d",&j);
}
return k;
}

void UndealoutList(RECNODE *r,int n)
{
int i;
printf("\n未排序前的数据 : ");
for(i=0;iprintf(" %d",r[i+1].key);
printf("\n\n");
}

void DealoutList(RECNODE*r,int n)
{
int i;

printf("排序后的数据 : ");
for(i=0;iprintf(" %d",r[i+1].key);
printf("\n\n");
printf("交换或比较的次数: %d\n",b);
printf("排序的趟数: %d\n",t);
}

void InsertSort(RECNODE*r,int n)//直接插入排序//
{
int i,j;
b=0,t=0;

for(i=2;i<=n;i++)
{
r[0]=r[i]; //这里!这里!这里!这里!这里!这里的r改为r[i]
j=i-1;
while(r[0].key{
r[j+1]=r[j]; //这里!这里!这里!这里!这里!这里的r改为r[j]
j--;
b++;
}
r[j+1]=r[0];
b++;
t++;
}
}

int main()//这里!这里!这里!这里!这里!这里需要补一个main函数
{
RECNODE r[MAXSIZE]={NULL};
int n;

n=MakeList(r);
UndealoutList(r,n);
InsertSort(r,n);
DealoutList(r,n);
return 0;
}

回答2:

#include
#include
#define MAXSIZE 100
#define KEYTYPE int
typedef struct
{
int key;
}RECNODE;

int b,t;

int MakeList(RECNODE *r)
{
int j,k;
printf("\n请输入初始数据(每个数据以空格隔开,-1结束): ");
k=0;
scanf("%d",&j);
while(j!=-1)
{
k++;
r->key=j;
scanf("%d",&j);
r++;//移动指针
}
return k;
}

void UndealoutList(RECNODE *r,int n)
{
int i;
printf("\n未排序前的数据 : ");
for(i=0;i printf(" %d",r->key);
printf("\n\n");
}

void DealoutList(RECNODE*r,int n)
{
int i;

printf("排序后的数据 : ");
for(i=0;i printf(" %d",r->key);
printf("\n\n");
printf("交换或比较的次数: %d\n",b);
printf("排序的趟数: %d\n",t);
}

void InsertSort(RECNODE*r,int n)//直接插入排序//
{
int i,j;
b=0,t=0;

for(i=2;i<=n;i++)
{
r[0]=*r;
j=i-1;
while(r[0].keykey)
{
r[j+1]=*r;
j--;
b++;
}
r[j+1]=r[0];
b++;
t++;
}
}
int main()
{
RECNODE node[5];
MakeList(node);
UndealoutList(node,5);

}

我帮你改了一下,你的指针使用有问题,那个排序的我没动,你是要怎么排序啊

回答3:

#include
#include
#define MAXSIZE 100
#define KEYTYPE int
typedef struct
{
int key;
}RECNODE;

int b,t;

int MakeList(RECNODE *r)
{
int j,k;
printf("\n请输入初始数据(每个数据以空格隔开,-1结束): ");
k=0;
scanf("%d",&j);
while(j!=-1)
{
k++;
r->key=j;
scanf("%d",&j);
r++;//移动指针
}
return k;
}

void UndealoutList(RECNODE *r,int n)
{
int i;
printf("\n未排序前的数据 : ");
for(i=0;i printf(" %d",r->key);
printf("\n\n");
}

void DealoutList(RECNODE*r,int n)
{
int i;

printf("排序后的数据 : ");
for(i=0;i printf(" %d",r->key);
printf("\n\n");
printf("交换或比较的次数: %d\n",b);
printf("排序的趟数: %d\n",t);
}

void InsertSort(RECNODE*r,int n)//直接插入排序//
{
int i,j;
b=0,t=0;

for(i=2;i<=n;i++)
{
r[0]=*r;
j=i-1;
while(r[0].keykey)
{
r[j+1]=*r;
j--;
b++;
}
r[j+1]=r[0];
b++;
t++;
}
}
int main()
{
RECNODE node[5];
MakeList(node);
UndealoutList(node,5);

}

回答4:

r[0]=r;
r[j+1]=r;
r[j+1]=r[0];
这里错误,因为你的结构体没有定义“=‘这个操作 所以这里是非法的

回答5:

变量命名重复了吧,把数组r的名字换成其他的试一下。