Short story long,i had to make 2 lists of integers,and perform reading,deleting,union,intersection,xor,subtraction operations using classes.
The following program gives me an error when IE: it enters union_function() and uses ll3.union_check.
I havent got a clue why....
#include <iostream>
using namespace std;
class linklist
{
private:
struct node
{
int data;
node *link;
}*p;
public:
linklist();
void append( int num );
void del( int num );
void union_function(linklist& ll3,linklist ll1,linklist ll2,int &s,int &f,int &g);
void intersection_function(linklist& ll3,linklist ll1,linklist ll2,int &s,int &g);
void diferenta1(linklist& ll3,linklist ll1,linklist ll2,int &s,int &f,int &g);
void diferenta2(linklist& ll3,linklist ll1,linklist ll2,int &s,int &f,int &g);
void xor(linklist& ll3,linklist ll1,linklist ll2,int &s,int &f,int &g);
void read(linklist &ll1,linklist &ll2,char a);
void display();
int check(node *q);
linklist(linklist&);
void merge(linklist& ll3);
int union_check();
int return_node();
int intersection_check();
int xor_check();
int count();
~linklist();
};
linklist::linklist()
{
p=NULL;
}
void linklist::append(int num)
{
node *q,*t;
if( p == NULL )
{
p = new node;
p->data = num;
p->link = NULL;
}
else
{
q = p;
while( q->link != NULL )
q = q->link;
t = new node;
t->data = num;
t->link = NULL;
q->link = t;
}
}
void linklist::del( int num )
{
node *q,*r;
q = p;
if( q->data == num )
{
p = q->link;
delete q;
return;
}
r = q;
while( q!=NULL )
{
if( q->data == num )
{
r->link = q->link;
delete q;
return;
}
r = q;
q = q->link;
}
cout<<"\nElement "<<num<<" not Found.";
}
void linklist::read(linklist &ll1,linklist &ll2,char c)
{
int x;
cout<<"Introduceti elemente in multimea A (')' va determina incheierea inserarii elementelor) ";
cout<<endl<<"(";
do
{
cin>>x;ll1.append(x);cin>>c;
}while(c!=')');
cout<<"Introduceti elemente in multimea B (')' va determina incheierea inserarii elementelor)";
cout<<endl<<"(";
do
{
cin>>x;ll2.append(x);cin>>c;
}while(c!=')');
ll1.display();cout<<endl<<"-----"<<endl;
ll2.display();cout<<endl<<"-----"<<endl;
}
void main()
{
int g=0,s=0,f=0,a=0;
char c;
linklist ll1,ll2,ll3;
cout<<" <c>-citire ; <r>-reuniune ; <i>-intersectie ; <a>-a/b ; <b>-b/a ; <x>-xor ;"<<endl;
do
{
cin>>c;
switch(c)
{
case 'c':ll3.read(ll1,ll2,c);break;
case 'r':ll3.union_function(ll3,ll1,ll2,s,f,g);break;
case 'i':ll3.intersection_function(ll3,ll1,ll2,s,g);break;
case 'a':ll3.diferenta1(ll3,ll1,ll2,s,f,g);break;
case 'b':ll3.diferenta2(ll3,ll1,ll2,s,f,g);break;
case 'x':ll3.xor(ll3,ll1,ll2,s,f,g);break;
default:cout<<endl<<"Incearca din nou . ";
};
}while(c!='t');