单链表合并-不重复
具体代码
#include<stdio.h>
#define MAXSIZE 11
typedef struct{
int *elem;
int length;
}SqList;
bool List_Init(SqList &L){
L.elem = new int[MAXSIZE];
if(!L.elem){
return false;
}
L.length = 0;
return true;
}
bool List_Insert(SqList &L,int index,int e){
if(index<0||index>MAXSIZE-1||L.length>=MAXSIZE){
return false;
}
for(int i=L.length;i>index;i--){
L.elem[i] = L.elem[i-1];
}
L.elem[index-1] = e;
L.length++;
return true;
}
bool List_Delete(SqList &L,int index){
if(index<0||index>L.length){
return false;
}
for(int i=index;i<L.length;i++){
L.elem[i-1] = L.elem[i];
}
L.length--;
}
int List_Find(SqList &L,int e){
for(int i=0;i<MAXSIZE;i++){
if(L.elem[i]==e){
return i+1;
}
}
return -1;
}
void List_Print(SqList &L){
for(int i=0;i<L.length;i++){
printf("%d ",L.elem[i]);
}
}
void List_Union(SqList &L1,SqList &L2){
for(int i=0;i<L2.length&&i<=MAXSIZE;i++){
bool findflag=true;
for(int j=0;j<L1.length&&j<=MAXSIZE;j++){
if(L1.elem[j]==L2.elem[i]){
findflag=false;
}
}
if(findflag){
List_Insert(L1,L1.length+1,L2.elem[i]);
}
}
}
int main(){
SqList L1;
SqList L2;
List_Init(L1);
List_Init(L2);
for(int i=1;i<=5;i++){
List_Insert(L1,i,i);
}
printf("L1:");
List_Print(L1);
for(int i=1;i<=5;i++){
List_Insert(L2,i,i*2);
}
printf("\nL2:");
List_Print(L2);
printf("\nL1+L2:");
List_Union(L1,L2);
List_Print(L1);
}