|
Implementarea modelelor de date
E3.1 Definitiile functiilor membre ale clasei IntNode sunt:
IntNode::~IntNode()
IntNode* IntNode::AddHead(int x)
IntNode* IntNode::RemoveHead()
void IntNode::Display()
cout << endl;
Dezavantajele acestei implementari: nu se poate defini o lista vida; orice operatie de inserare sau stergere modifica valoarea pointerului la lista; pentru extragerea unui element se folosesc doua functii GetHead() si RemoveHead(), iar dupa aceea nodul eliminat din lista trebuie sters.
E3.2 Destructorii claselor IntSListNode si IntSList se mai pot defini si astfel:
~IntSListNode()
IntSList::~IntSList()
Cu aceste definitii nodurile listei se sterg in ordine inversa, incepand cu ultimul nod si sfarsind cu primul nod. Mesajele care se afiseaza la executia functiei fslist1() sunt urmatoarele:
1 2 3 4 5
Destructor nod v = 5
Destructor nod v = 4
Destructor nod v = 3
Destructor nod v = 2
Destructor nod v = 1
E3.3 Functiile constructori si destructori ale claselor IntDListNode si IntDList sunt:
IntDListNode::~IntDListNode()
IntDList::IntDList(int* p, int n)
IntDList::IntDList(const IntArray& array)
IntDList::IntDList(IntDList& r)
IntDList::~IntDList()
Versiunile constructorilor clasei IntDList folosind functia AddHead() sunt
IntDList::IntDList(int* p, int n)
IntDList::IntDList(const IntArray& array)
IntDList::IntDList(IntDList& r)
Functia Display() a clasei IntDList afiseaza elementele listei de la capul listei pana la sfarsitul acesteia. Functia ReverseDisplay() afiseaza elementele listei in ordine inversa: de la sfarsitul listei pana la primul element.
void IntDList::Display()
cout << endl;
void IntDList::ReverseDisplay()
cout << endl;
Functiile de citire a elementelui din capul listei (GetHead()), si a elementului de la sfarsitul listei (GetTail()) si de extragere (RemoveHead()si RemoveTail()) sunt urmatoarele
int IntDList::GetHead()
int IntDList::GetTail()
int IntDList::RemoveHead()
return v;
}
int IntDList::RemoveTail()
return v;
}
E3.6 Functiile declarate in clasa BTree se definesc astfel
void BTree::preorder()
void BTree::postorder1(TNode *root)
void BTree::postorder()
void BTree::delTree1(TNode *root)
BTree::~BTree()