顺序表问题 输出有错误

来源:百度知道 编辑:UC知道 时间:2024/05/20 21:22:13
#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]; <

有什么错误?正确的应该是什么样(你期待得到什么结果)?用什么编译器?

*******************************************
将part_SeqList()函数改为如下形式:

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;j--)
L->data[j+1]=L->data[j];
L->data[k+1]=y;
L->last++;
for (j=i; j<L->last; j++) {
L->data[j]=L->data[j+1];
}
L->last--;
k--;
i--;
}
for(i=k+1;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;
}

}