#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char *data; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j;
PX *a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}};
for(i=2;i<8;++i)
{
if(a[i]->key<a[i-1]->key)
{
a[0]=a[i]; //将待插人的记灵暂存到监视哨中
a[i]=a[i-1]; //a[1-1]后移
for(j=i-2; a[0]->key<a[j]->key;--j) //从后向前寻找插入位置
{
a[j+1]=a[j]; //记录逐个后移,直到找到插入位置
}
a[j+1]=a[0]; //将a[0]即原a[i],插入到正确位置
}
}
for(i=1;i<8;i++)
{
printf("%c\t",a[i]->data);
}
}
代码二
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char *data; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j,k;
PX *a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}},*t;
for(i=1;i<8;++i)
{
k=i;
for(j=i+1;j<=8;++j)
{
if(a[j]->key<a[k]->key)
{
k=j;
}
}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
printf("%c\t",a[i]->data);
}
return 0;
}
数组不要用指针,
你题目的解答代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char *data; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j;
PX a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}};
for(i=2;i<8;++i)
{
if(a[i].key<a[i-1].key)
{
a[0]=a[i]; //将待插人的记灵暂存到监视哨中
a[i]=a[i-1]; //a[1-1]后移
for(j=i-2; a[0].key<a[j].key;--j) //从后向前寻找插入位置
{
a[j+1]=a[j]; //记录逐个后移,直到找到插入位置
}
a[j+1]=a[0]; //将a[0]即原a[i],插入到正确位置
}
}
for(i=1;i<8;i++)
{
printf("%s\t",a[i].data); //字符串要朋%s
}
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char *data; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j;
PX a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}};
for(i=2;i<8;++i)
{
if(a[i].key<a[i-1].key)
{
a[0]=a[i]; //将待插人的记灵暂存到监视哨中
a[i]=a[i-1]; //a[1-1]后移
for(j=i-2; a[0].key<a[j].key;--j) //从后向前寻找插入位置
{
a[j+1]=a[j]; //记录逐个后移,直到找到插入位置
}
a[j+1]=a[0]; //将a[0]即原a[i],插入到正确位置
}
}
for(i=1;i<8;i++)
{
printf("%s\t",a[i].data);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char data[3]; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j,k;
PX a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}},t;
for(i=1;i<8;++i)
{
k=i;
for(j=i+1;j<=8;++j)
{
if(a[j].key<a[k].key)
{
k=j;
}
}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
printf("%s\t",a[i].data);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
const char* data; //数据项
int key; //关键字项
}PX;
int main()
{
int i, j;
// PX *a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}};
//a是指针类型数组,里面应该放的是{"无",0}的地址才对
PX a[8] = { {"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53} };
for (i = 2; i < 8; ++i)
{
if (a[i].key < a[i - 1].key)
{
a[0] = a[i]; //将待插人的记灵暂存到监视哨中
a[i] = a[i - 1]; //a[1-1]后移
for (j = i - 2; a[0].key < a[j].key; --j) //从后向前寻找插入位置
{
a[j + 1] = a[j]; //记录逐个后移,直到找到插入位置
}
a[j + 1] = a[0]; //将a[0]即原a[i],插入到正确位置
}
}
for (i = 1; i < 8; i++)
{
//data是字符串类型,应该用%s
printf("%s\t", a[i].data);
}
}
题二错误相同
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char *data; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j,k;
PX a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}},t;
for(i=1;i<8;++i)
{
k=i;
for(j=i+1;j<=8;++j)
{
if(a[j].key<a[k].key)
{
k=j;
}
}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
printf("%s\t",a[i].data);
}
return 0;
}