|
|
#2
whbc2011-08-13 16:08
# include<stdio.h>
# include<malloc.h> #define OK 1 #define error 0 typedef int ElemType; typedef struct{ ElemType *elem; int length; int listsize; }SqList; int creat_scanflist(SqList *L,ElemType Length) { ElemType i; L->elem=(ElemType*)malloc(Length*sizeof(ElemType)); if(!L->elem) return error; printf("请输入顺序表VA的数据元素:"); for(i=0;i<Length;i++) { scanf("%d",&L->elem[i]); } L->listsize=Length; return OK; } int insertlist(SqList *L,ElemType e) { ElemType i,j,record; L->elem = (ElemType*)realloc(L->elem,(L->listsize+1)*sizeof(ElemType)); if(!L->elem) return error; for(i=0;i<L->listsize;i++) { if(e<=L->elem[i]) { record=i; break; } else record=i+1; } for(j=L->listsize-1;j>=i;j--) { L->elem[j+1]=L->elem[j]; } L->elem[record]=e; L->listsize++; return OK; } void printflist(SqList L) { ElemType i; for(i=0;i<L.listsize;i++) { printf("%d ",L.elem[i]); } printf("\n"); } int main() { SqList VA; ElemType x; printf("请输入顺序表VA的元素个数:"); scanf("%d",&VA.length); creat_scanflist(&VA,VA.length); printf("请输入要插入顺序表VA的数据元素x:"); scanf("%d",&x); insertlist(&VA,x); printf("插入元素x后的顺序表VA为:"); printflist(VA); return 0; } 这样可以了,对了,哥们那个数组的下表都是从0开始,你每次都是从1开始遍历数组内部的数据,还有就是你那里realloc的话你既然要插入一个元素,那么你就要L->listlize+1.不然你没有地方插入啊!还有你如果是这样插入元素的话,你应该输入一组已经排好序的数吧,不然你还要先将它排序! |
# include<stdio.h>
# include<malloc.h>
#define OK 1
#define error 0
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
int creat_scanflist(SqList *L,ElemType Length)
{
ElemType i;
L->elem=(ElemType*)malloc(Length*sizeof(ElemType));
if(!L->elem) return error;
printf("请输入顺序表VA的数据元素:");
for(i=1;i<=Length;i++){
scanf("%d",&L->elem[i]);
}
L->listsize=Length+1;
return OK;
}
int insertlist(SqList *L,ElemType e)
{
ElemType i,j,record;
L->elem = (ElemType*)realloc(L->elem,L->listsize*sizeof(ElemType));
if(!L->elem) return error;
for(i=1;i<=L->listsize-1;i++){
if(e>=L->elem[i]&&e<=L->elem[i+1]){
record=i;
for(j=L->listsize-1;j>=i;j--){
L->elem[j+1]=L->elem[j];
}
L->elem[record+1]=e;
}
}
return OK;
}
void printflist(SqList L)
{
ElemType i;
for(i=1;i<L.listsize+1;i++){
printf("%d ",L.elem[i]);
}
printf("\n");
}
int main()
{
SqList VA;
ElemType x;
printf("请输入顺序表VA的元素个数:");
scanf("%d",&VA.length);
creat_scanflist(&VA,VA.length);
printf("请输入要插入顺序表VA的数据元素x:");
scanf("%d",&x);
insertlist(&VA,x);
printf("插入元素x后的顺序表VA为:");
printflist(VA);
return 0;
}