菜鸟有关问题.帮忙啊多谢了`哪位高手帮忙.给满分。
初学者问题..帮忙啊!~!...谢谢了``谁帮忙..给满分。.
#include <stdio.h>
#include <stdlib.h>
#define list_init_size 100
typedef struct
{
int * elem ;
int length;
int listsize ;
} sqlist ;
int listinit(sqlist *a,sqlist *b) //建立表..a和b...
{
a-> elem=(int *)malloc(list_init_size*sizeof(int )) ;
if(a-> elem==NULL)
return 0 ;
a-> length=NULL;
a-> listsize=list_init_size;
b-> elem=(int *)malloc(list_init_size*sizeof(int ));
if(b-> elem==NULL)
return 0 ;
b-> length=NULL;
b-> listsize=list_init_size;
return 1 ;
}
int mergelist(sqlist *a,sqlist *b,sqlist *c)
{
c-> elem=(int *)malloc(list_init_size*sizeof(int )) ; ///建立表C
if(c-> elem==NULL)
return 0 ;
c-> length=a-> length+b-> length;
c-> listsize=a-> listsize+b-> listsize;
int *la,*lb;
int i;
la=a-> elem+a-> length-1; //合并
lb=b-> elem+b-> length-1;
while(a-> elem <=la && b-> elem <=lb)
if(a-> elem <=b-> elem)
{
*(c-> elem)++=*(a-> elem)++;
}
else
{ *(c-> elem)++=*(b-> elem)++;
}
while(a-> elem <= la)
*(c-> elem)++=*(a-> elem)++;
while(b-> elem <=lb)
*(c-> elem)++=*(b-> elem)++;
return 1;
}
main()
{
sqlist l,m,n;
int i,j,k;
listinit(&l,&m);
for(i=0;i <10;i++)
{
scanf( "%d ",&l.elem[i]);
l.length++;
}
for(j=0;j <10;j++)
{
scanf( "%d ",&m.elem[j]);
m.length++;
}
mergelist(&l,&m,&n);
for(k=0;k <=n.length-1;k++)
printf( "%d ",n.elem[k]);
return 1;
}
------解决方案--------------------
拿我得号问题得时候那么大方。自己问就这么小气,,BS。。。
#include <stdio.h>
#include <stdlib.h>
#define list_init_size 100
typedef struct
{
int * elem ;
int length;
int listsize ;
} sqlist ;
int listinit(sqlist *a,sqlist *b) //建立表..a和b...
{
a-> elem=(int *)malloc(list_init_size*sizeof(int )) ;
if(a-> elem==NULL)
return 0 ;
a-> length=NULL;
a-> listsize=list_init_size;
b-> elem=(int *)malloc(list_init_size*sizeof(int ));
if(b-> elem==NULL)
return 0 ;
b-> length=NULL;
b-> listsize=list_init_size;
return 1 ;
}
int mergelist(sqlist *a,sqlist *b,sqlist *c)
{
c-> elem=(int *)malloc(list_init_size*sizeof(int )) ; ///建立表C
if(c-> elem==NULL)
return 0 ;
c-> length=a-> length+b-> length;
c-> listsize=a-> listsize+b-> listsize;
int *la,*lb;
int i;
la=a-> elem+a-> length-1; //合并
lb=b-> elem+b-> length-1;
while(a-> elem <=la && b-> elem <=lb)
if(a-> elem <=b-> elem)
{
*(c-> elem)++=*(a-> elem)++;
}
else
{ *(c-> elem)++=*(b-> elem)++;
}
while(a-> elem <= la)
*(c-> elem)++=*(a-> elem)++;
while(b-> elem <=lb)
*(c-> elem)++=*(b-> elem)++;
return 1;
}
main()
{
sqlist l,m,n;
int i,j,k;
listinit(&l,&m);
for(i=0;i <10;i++)
{
scanf( "%d ",&l.elem[i]);
l.length++;
}
for(j=0;j <10;j++)
{
scanf( "%d ",&m.elem[j]);
m.length++;
}
mergelist(&l,&m,&n);
for(k=0;k <=n.length-1;k++)
printf( "%d ",n.elem[k]);
return 1;
}
------解决方案--------------------
拿我得号问题得时候那么大方。自己问就这么小气,,BS。。。