用线性表将所有在lb 中但不在la中的元素插入la中
LOC(a1)是线性表的第一个数据元素a1的存储位置,乘坐线性表的起始位置。
线性表中元素的个数n定义为线性表的长度,n=0时为空表
在非空表中的每一个元素都有一个确定的位置,如a1是第一个数据元素,an是最后一个数据元素,当i=1,2,3…n-1 ,ai有且仅有一个直接后继,当i=2,3…n时,ai有且只有一个直接前驱;
线性表的顺序存储结构是一种随机存取的存储结构
#include<stdio.h>
#include<stdlib.h>
#define list_init_len 100
#define listcreat 10
#define OK 1
#define OVERFLOW 0
typedef struct {
int *elem;//存储空间基地址
int len;
int listsize;
}List;
int initlist(List &L)//构造一个空的线性表
{
L.elem = (int *)malloc(list_init_len * sizeof(int));
if (!L.elem)
exit(OVERFLOW);
L.len =0;
L.listsize=list_init_len;
return OK;
}
int insertlist(List &L,int Len,int e) {
// L.elem = (int *)malloc(list_init_len * sizeof(int));
if(Len>L.len){
L.len++;
}
L.len=e;
}
int getelem(List &L,int n,int e){
if(n>L.len )exit(1);
return e=L.elem[n];
}
int LocateElem(List &L,int e)
{
for(int i=1;i<=L.len ;i++){
if(L.elem[i] == e){
return 1;
}
return 0;
}
}
void Union(List &la,List &lb){
//将所有在lb 中但不在la中的元素插入la中
int e;
for(int i=1;i<lb.len ;i++){
getelem(lb,i,e);}
if(!LocateElem(la,e)){//la中没有与e相等的元素
insertlist(la,++la.len,e) ;
}
}
void give(List &L){
//给表随机赋予10个数据元素
for(int i=1;i<=10;i++)
L.elem[i]=rand();
}
void printlist(List &L){//输出顺序表
for(int i=1;i<=10 ;i++){
printf("%d\t",L.elem[i]);
}
printf("\n");
}
int main()
{
List La,Lb;
initlist(La);
initlist(Lb);
give(La);
give(Lb);
printlist(La);
printlist(Lb);
Union(La,Lb);
printlist(La);
return 0;
}