C语言,顺序表的插入

l创建顺序表La和Lb。在表La中插入5个元素,依次为1、2、3、4、5。在表Lb中插入5个元素,依次为2、4、6、8、10。将所有在顺序表Lb中但不在La中的数据元素插入到La中,并将La、Lb和插入操作完成后的La内容打印输出。

楼主你好
具体代码如下:
#include<stdio.h>
#include<stdlib.h>
#define MAX 20

typedef struct
{
int a[MAX];
int length;
}List;

void CreatList(List *L)//创建顺序表
{
int i=0;
printf("输入任意个整数(用用空格间隔:1 2 3……)\n:");
do
{
scanf("%d",&L->a[i]);
i++;
}while(getchar()!='\n');
L->length=i;
}

void ListInsert(List *La,List *Lb)//将所有在顺序表Lb中但不在La中的数据元素插入到La中
{
int i,j;

for(i=0;i<Lb->length;i++)
{
for(j=0;j<La->length;j++)
{
if(Lb->a[i]==La->a[j])
break;
}

if(j==La->length)
{
La->length++;
La->a[La->length-1]=Lb->a[i];
}
}
}

void DispList(List *L)//输出顺序表
{
int i;
for(i=0;i<L->length;i++)
printf("%-3d",L->a[i]);
printf("\n");
}

int main()
{
List *La,*Lb;
La=(List *)malloc(sizeof(List));
Lb=(List *)malloc(sizeof(List));

printf("创建La\n");
CreatList(La);
printf("\n创建Lb\n");
CreatList(Lb);

printf("\nLa插入前:\n");
DispList(La);
printf("Lb:\n");
DispList(Lb);

ListInsert(La,Lb);
printf("\nLa插入后:\n");
DispList(La);

return 0;
}
ps:楼主有什么不懂的 可以提问哈

希望能帮助你哈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-07
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef struct
{
int elem[MAXSIZE];
int last;
}sqlist;
sqlist *init_sqlist()
{
sqlist *L;
L=(sqlist *)malloc(sizeof(sqlist));
L->last=-1;
return L;
}
void creatsqlist(sqlist *L)
{
int i;
printf("%d",L->last);
scanf("%d",&(*L).last);
for(i=0;i<=(*L).last;i++)
scanf("%d",&(*L).elem[i]);
}
void merge(sqlist *LA,sqlist *LB,sqlist *LC)
{
int i,j,k;
i=0,j=0,k=0;
while(i<=LA->last&&j<=LB->last)
if(LA->elem[i]<=LB->elem[j])
{
LC->elem[k]=LA->elem[i];
i++;
k++;
}
else
{
LC->elem[k]=LB->elem[j];
j++;
k++;
}
while(i<=LA->last)
{
LC->elem[k]=LA->elem[i];
i++;
k++;
}
while(j<=LB->last)
{
LC->elem[k]=LB->elem[j];
j++;
k++;
}
LC->last=LA->last+LB->last+1;
}
void main()
{
int i;
sqlist *p,*q,*s;
p=init_sqlist();
q=init_sqlist();
s=init_sqlist();
creatsqlist(p);
creatsqlist(q);
merge(p,q,s);
for(i=0;i<=s->last;i++)
printf("%d",s->elem[i]);
}本回答被网友采纳
第2个回答  2012-10-09
直接用单链表写就好(表是有序的。。。),话说链表的应用学计算机的都要会吧?
第3个回答  2012-10-07
太难,没时间做
第4个回答  2012-10-09
高人
相似回答