. , ' , . ', , . , , .
++ .
. .
class Node
{ public:
char d; //
Node *next; //
Node *prev; //
Node (char dat = 0) {d = dat; next = 0; prev = 0;} //
};
class Set
{ Node *pbeg, *pend; //
public:
Set() { pbeg = 0; pend = 0; }//
~Set();//
void include(char d); //
Node *find(char d); //
bool exclude(char key); //
int power(); //
void print();//
};
. include . find . . .
Node * Set::find(char d)
{ Node *pv = pbeg;
while(pv) { if(pv->d == d) { break;} pv = pv->next; }
return pv;}
void Set::include(char d)
{ if(Node *key=find(d)) return; // key, , 0
Node *pv = new Node(d);
if(!pbeg) { pbeg = pend = pv; }
else { pv->prev = pend; pend->next = pv; pend = pv; }
}
exclude :
bool Set::exclude(char key)
{ if(Node *pkey = find(key))
{ if(pbeg == pkey) //
{pbeg = pbeg->next; pbeg->prev = 0;}
else if(pkey == pend) //
{pend = pend->prev; pend->next = 0;}
else //
{(pkey->prev)->next = pkey->next;
(pkey->next)->prev = pkey->prev; }
delete pkey;
return true;}
return false;
}
ʳ . . . . . power :
power print :
int Set::power()
{ int p=0;
Node *pv = pbeg;
while(pv) { p++; pv = pv->next;}
return p;
}
void Set::print()
{ Node *pv = pbeg;
cout << endl << " Set: ";
|
|
while(pv) {cout << pv->d << " "; pv = pv->next;}
cout << endl;}
' - :
Set::~Set()
{ if(pbeg) {Node *pv = pbeg;
while(pv) {pv = pv->next; delete pbeg; pbeg = pv; }
}
}
, Set. 'BETA', ; 'A', 'T', 'X' , ; 'T', .
void main()
{ Set S;
S.include('B');
S.include('E');
S.include('T');
S.include('A');
S.print();
cout<<" Power of set="<<S.power();
S.include('A');
S.include('T');
S.include('X');
S.print();
cout<<" Power of set="<<S.power();
if(!S.exclude('T')) {cout << "element not found"<< endl;}
S.print();
cout<<" Power of set="<<S.power();
getch();}
:
B , , ;
' B , , A, B;
B , , , B;
A B , , . , {1,2,3} {3,4} {1,2,4}.