Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template <class T> class Nodo
- {
- public:
- Nodo <T>* prec;
- Nodo <T>* suc;
- T val;
- Nodo ()
- {
- prec = NULL;
- suc = NULL;
- }
- };
- template <class T> class Table
- {
- public:
- virtual void del (T x) = 0;
- virtual void ins (T x) = 0;
- virtual T* Max () = 0;
- virtual T* Min () = 0;
- virtual void print () = 0;
- };
- template <class T> class MyTable : public Table <T>
- {
- public:
- Nodo <T>* head;
- Nodo <T>* tail;
- MyTable ()
- {
- head = NULL;
- tail = NULL;
- }
- void del (T x)
- {
- Nodo <T>* curr = tail;
- int check = 0;
- while (check == 0 && curr != NULL)
- {
- if (curr -> val == x)
- {
- Nodo <T>* auxp = curr -> prec;
- Nodo <T>* auxs = curr -> suc;
- if (auxp != NULL)
- auxp -> suc = auxs;
- else
- head = head -> suc;
- if (auxs != NULL)
- auxs -> prec = auxp;
- else
- tail = tail -> prec;
- delete curr;
- check = 1;
- }
- else
- {
- curr = curr -> prec;
- }
- }
- }
- void ins (T x)
- {
- Nodo <T>* nuovo = new Nodo <T>;
- nuovo -> val = x;
- nuovo -> suc = NULL;
- if (head == NULL && tail == NULL)
- {
- nuovo -> prec = NULL;
- head = nuovo;
- tail = nuovo;
- }
- else
- {
- tail -> suc = nuovo;
- nuovo -> prec = tail;
- tail = nuovo;
- }
- }
- T* Max ()
- {
- Nodo <T>* curr = head -> suc;
- T* mas = new T;
- *mas = head -> val;
- while (curr != NULL)
- {
- if (curr -> val > *mas)
- *mas = curr -> val;
- curr = curr -> suc;
- }
- return mas;
- }
- T* Min ()
- {
- Nodo <T>* curr = head -> suc;
- T* mi = new T;
- *mi = head -> val;
- while (curr != NULL)
- {
- if (curr -> val < *mi)
- *mi = curr -> val;
- curr = curr -> suc;
- }
- return mi;
- }
- void print ()
- {
- Nodo <T>* curr = head;
- while (curr != NULL)
- {
- cout << "[" << curr -> val << "]";
- curr = curr -> suc;
- }
- }
- };
- int main ()
- {
- MyTable <int> t1;
- t1.ins (3); t1.ins (7); t1.ins (1); t1.ins (8); t1.ins (5); t1.ins (2); t1.ins (6); t1.ins (1); t1.ins (8);
- t1.del (8); t1.del (7); t1.del (1);
- cout << *(t1.Max) << endl << *(t1.Min) << endl;
- t1.print ();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement