#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;i
printf("\n\n");
}
void DealoutList(RECNODE*r,int n)
{
int i;
printf("排序后的数据 : ");
for(i=0;i
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;
}
#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("\n\n");
}
void DealoutList(RECNODE*r,int n)
{
int i;
printf("排序后的数据 : ");
for(i=0;i
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].key
{
r[j+1]=*r;
j--;
b++;
}
r[j+1]=r[0];
b++;
t++;
}
}
int main()
{
RECNODE node[5];
MakeList(node);
UndealoutList(node,5);
}
我帮你改了一下,你的指针使用有问题,那个排序的我没动,你是要怎么排序啊
#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("\n\n");
}
void DealoutList(RECNODE*r,int n)
{
int i;
printf("排序后的数据 : ");
for(i=0;i
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].key
{
r[j+1]=*r;
j--;
b++;
}
r[j+1]=r[0];
b++;
t++;
}
}
int main()
{
RECNODE node[5];
MakeList(node);
UndealoutList(node,5);
}
r[0]=r;
r[j+1]=r;
r[j+1]=r[0];
这里错误,因为你的结构体没有定义“=‘这个操作 所以这里是非法的
变量命名重复了吧,把数组r的名字换成其他的试一下。