线性表是单链表
#include <iostream>
#include <cstdlib>
using namespace std;
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
void listTailInsert(LinkList &L){
LinkList r, s;
char c;
ElemType e;
L = (LinkList)malloc(sizeof(LNode));
r = L;
while(cin>>e){
s = (LinkList)malloc(sizeof(LNode));
s->data = e;
r->next = s;
r = s;
c = getchar();
if(c=='\n')
break;
}
r->next = NULL;
}
void deleteUnion(LinkList &A, LinkList B, LinkList C){
LinkList pa, pb, pc;
pa = A;
pb = B->next;
pc = C->next;
while(pb && pc){
if(pb->data == pc->data){
while(pa && pa->next && pa->next->data<=pc->data){
if(pa->next->data==pc->data){
LinkList t = pa->next;
pa->next = t->next;
free(t);
}else
pa = pa->next;
}
pb = pb->next;
pc = pc->next;
}else if(pb->data > pc->data){
pc = pc->next;
}else if(pb->data < pc->data){
pb = pb->next;
}
}
}
void printList(LinkList L){
LinkList p = L->next;
while(p){
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main(){
LinkList A, B, C;
cout << "输入A表元素:";
listTailInsert(A);
cout << "输入B表元素:";
listTailInsert(B);
cout << "输入C表元素:";
listTailInsert(C);
cout << "处理前的表A:";
printList(A);
deleteUnion(A, B, C);
cout << "处理后的表A:";
printList(A);
return 0;
}
线性表是顺序表
#include <iostream>
using namespace std;
const int maxsize = 100;
const int flag = -1;
typedef int ElemType;
struct SqList{
ElemType elem[maxsize];
int length;
};
void initList(SqList &L){
int x, len;
len = 0;
while(cin>>x && x!=flag){
L.elem[len++] = x;
}
L.length = len;
}
void deleteElem(SqList &L, int i){
int j;
for(j=i+1; j<L.length; j++)
L.elem[j-1] = L.elem[j];
L.length--;
}
void deleteUnion(SqList &A, SqList B, SqList C){
int i, j, k;
i = j = k = 0;
while(j<B.length && k<C.length){
if(B.elem[j] == C.elem[k]){
while(i<A.length && A.elem[i]<=B.elem[j]){
if(A.elem[i] == B.elem[j]){
int t;
for(t=i+1; t<A.length; t++)
A.elem[t-1] = A.elem[t];
A.length--;
}else{
i++;
}
}
j++;
k++;
}else if(B.elem[j] > C.elem[k]){
k++;
}else if(B.elem[j] < C.elem[k]){
j++;
}
}
}
void printList(SqList L){
int i;
for(i=0; i<L.length; i++)
cout << L.elem[i] << " ";
cout << endl;
}
int main(){
SqList A, B, C;
cout << "输入表A中元素:";
initList(A);
cout << "输入表B中元素:";
initList(B);
cout << "输入表C中元素:";
initList(C);
cout << "处理前的表A:";
printList(A);
deleteUnion(A, B, C);
cout << "处理后的表A:";
printList(A);
return 0;
}