主题:顺序表问题 输出出错
要求以第k个元素为标准小于第k个元素的放在1——k之前
大于的放在后面
#define MAXSIZE 100
typedef int datatype;
typedef struct
{datatype data[MAXSIZE];
int last;
}SeqList;
void input(SeqList *L)
{int i,x;
i=1;
printf("please input x=");
scanf("%d",&x);
while(x!=-1)
{ L->data[i]=x;i++;
if(i==MAXSIZE)printf("the list is overflow");
else scanf("%d",&x);
}
L->last=i-1;
}
void output(SeqList *L)
{int i;
printf("the data of SeqList is:");
for(i=1;i<=L->last;i++)
printf("%d ",L->data[i]);
}
void part_SeqList(SeqList *L,int k)
{ int i,j;
datatype x,y;
x=L->data[k];
for(i=1;i<=k;i++)
if(L->data[i]>x)
{ y=L->data[i];
for(j=L->last;j>=k+1;j--)
L->data[j+1]=L->data[j];
L->data[k+1]=y;
L->last++;
}
for(i=k;i<=L->last;i++)
if(L->data[i]<x)
{y=L->data[i];
for(j=i-1;j>=k;j--)
L->data[j+1]=L->data[j];
L->data[k]=y;
}
}
main()
{SeqList L;
int k,j;
input(&L);
printf("please input k=");
scanf("%d",&k);
printf("L->data[k]=%2d",L.data[k]);
printf("\n");
part_SeqList(&L,k);
output(&L);
getch();
}
大于的放在后面
#define MAXSIZE 100
typedef int datatype;
typedef struct
{datatype data[MAXSIZE];
int last;
}SeqList;
void input(SeqList *L)
{int i,x;
i=1;
printf("please input x=");
scanf("%d",&x);
while(x!=-1)
{ L->data[i]=x;i++;
if(i==MAXSIZE)printf("the list is overflow");
else scanf("%d",&x);
}
L->last=i-1;
}
void output(SeqList *L)
{int i;
printf("the data of SeqList is:");
for(i=1;i<=L->last;i++)
printf("%d ",L->data[i]);
}
void part_SeqList(SeqList *L,int k)
{ int i,j;
datatype x,y;
x=L->data[k];
for(i=1;i<=k;i++)
if(L->data[i]>x)
{ y=L->data[i];
for(j=L->last;j>=k+1;j--)
L->data[j+1]=L->data[j];
L->data[k+1]=y;
L->last++;
}
for(i=k;i<=L->last;i++)
if(L->data[i]<x)
{y=L->data[i];
for(j=i-1;j>=k;j--)
L->data[j+1]=L->data[j];
L->data[k]=y;
}
}
main()
{SeqList L;
int k,j;
input(&L);
printf("please input k=");
scanf("%d",&k);
printf("L->data[k]=%2d",L.data[k]);
printf("\n");
part_SeqList(&L,k);
output(&L);
getch();
}