线性表——求AB差值(A出现而不在B出现)
//“LinkList.h” #include<iostream> using namespace std; #define ElemType int typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; string InitList(LinkList &L){ L = new LNode; L->next = NULL; return "OK"; } string ListInsert(LinkList &L,int i,ElemType e){ LinkList P = L; int j=0; while (P && (j<i-1)) { P = P->next;++j; } LinkList S = new LNode; S->data = e; S->next=P->next; P->next=S; return "OK"; } ElemType GetElement(LinkList L,int i){ LinkList p = L; int j = 1; while(p && j<i){ p=p->next; j++; } if(!p||j>i){ return -1; } return p->data; } string DeleteList(LinkList &L,int i){ LinkList p = L; int j = 0; while ((p->next)&&(j<i-1)) { p=p->next; j++; } if(!(p->next)||(j>i-1)) return "ERROR"; LinkList q = p->next; p->next=q->next; delete q; return "OK"; } string ShowList(LinkList L){ LinkList p= L; while(p->next){ p=p->next; cout<<p->data; } return "OK"; } // int main(){ // LinkList L; // InitList(L); // int p =1; // char a = '1'; // while (a != '!') // { // char b ; // cin >> b; // ElemType e = (ElemType)b - 48; // a = b; // if(a != '!') // cout << ListInsert(L,p,e)<<endl; // p++; // } // ShowList(L); // DeleteList(L,2); // ShowList(L); // return 0; // }
#include<iostream> #include"LinkList.h" using namespace std; /* 求AB差集 */ int main(){ LinkList LA; LinkList LB; LinkList LC; InitList(LA); InitList(LB); InitList(LC); for(int i=1;i<=5;i++){ //输入五个数填充链表 int a ; cin>>a; ListInsert(LA,i,a); } cout<<"done"<<endl; for(int i=1;i<=5;i++){ int a ; cin>>a; ListInsert(LB,i,a); } LNode *pa = LA->next; LNode *pb = LB->next; int m = 0; int n = 0; LNode*pc=LC; while(pa){ while(pb){ if(pa->data==pb->data) //检查有无重复元素 m=1; pb=pb->next; } if(m==0){ n++; //若无,添加到LC中 ListInsert(LC,n,pa->data); } pa=pa->next; m=0; pb=LB; } delete LB; cout<<"差集为: "; ShowList(LC); cout<<endl<<"number: "<<n; system("pause"); return 0; }
#include<iostream>
using namespace std;
#define ElemType int
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
string InitList(LinkList &L){
L = new LNode;
L->next = NULL;
return "OK";
}
string ListInsert(LinkList &L,int i,ElemType e){
LinkList P = L;
int j=0;
while (P && (j<i-1))
{
P = P->next;++j;
}
LinkList S = new LNode;
S->data = e;
S->next=P->next;
P->next=S;
return "OK";
}
ElemType GetElement(LinkList L,int i){
LinkList p = L;
int j = 1;
while(p && j<i){
p=p->next;
j++;
}
if(!p||j>i){
return -1;
}
return p->data;
}
string DeleteList(LinkList &L,int i){
LinkList p = L;
int j = 0;
while ((p->next)&&(j<i-1))
{
p=p->next;
j++;
}
if(!(p->next)||(j>i-1))
return "ERROR";
LinkList q = p->next;
p->next=q->next;
delete q;
return "OK";
}
string ShowList(LinkList L){
LinkList p= L;
while(p->next){
p=p->next;
cout<<p->data;
}
return "OK";
}
// int main(){
// LinkList L;
// InitList(L);
// int p =1;
// char a = '1';
// while (a != '!')
// {
// char b ;
// cin >> b;
// ElemType e = (ElemType)b - 48;
// a = b;
// if(a != '!')
// cout << ListInsert(L,p,e)<<endl;
// p++;
// }
// ShowList(L);
// DeleteList(L,2);
// ShowList(L);
// return 0;
// }