Advertisement
Guest User

Untitled

a guest
Mar 1st, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <class T> class Nodo
  5. {
  6. public:
  7. Nodo <T>* prec;
  8. Nodo <T>* suc;
  9. T val;
  10. Nodo ()
  11. {
  12. prec = NULL;
  13. suc = NULL;
  14. }
  15. };
  16.  
  17. template <class T> class Table
  18. {
  19. public:
  20. virtual void del (T x) = 0;
  21. virtual void ins (T x) = 0;
  22. virtual T* Max () = 0;
  23. virtual T* Min () = 0;
  24. virtual void print () = 0;
  25. };
  26.  
  27. template <class T> class MyTable : public Table <T>
  28. {
  29. public:
  30. Nodo <T>* head;
  31. Nodo <T>* tail;
  32.  
  33. MyTable ()
  34. {
  35. head = NULL;
  36. tail = NULL;
  37. }
  38.  
  39. void del (T x)
  40. {
  41. Nodo <T>* curr = tail;
  42. int check = 0;
  43.  
  44. while (check == 0 && curr != NULL)
  45. {
  46. if (curr -> val == x)
  47. {
  48. Nodo <T>* auxp = curr -> prec;
  49. Nodo <T>* auxs = curr -> suc;
  50.  
  51. if (auxp != NULL)
  52. auxp -> suc = auxs;
  53. else
  54. head = head -> suc;
  55. if (auxs != NULL)
  56. auxs -> prec = auxp;
  57. else
  58. tail = tail -> prec;
  59.  
  60. delete curr;
  61. check = 1;
  62. }
  63. else
  64. {
  65. curr = curr -> prec;
  66. }
  67. }
  68. }
  69.  
  70. void ins (T x)
  71. {
  72. Nodo <T>* nuovo = new Nodo <T>;
  73. nuovo -> val = x;
  74. nuovo -> suc = NULL;
  75.  
  76. if (head == NULL && tail == NULL)
  77. {
  78. nuovo -> prec = NULL;
  79. head = nuovo;
  80. tail = nuovo;
  81. }
  82. else
  83. {
  84. tail -> suc = nuovo;
  85. nuovo -> prec = tail;
  86. tail = nuovo;
  87. }
  88. }
  89.  
  90. T* Max ()
  91. {
  92. Nodo <T>* curr = head -> suc;
  93. T* mas = new T;
  94. *mas = head -> val;
  95.  
  96. while (curr != NULL)
  97. {
  98. if (curr -> val > *mas)
  99. *mas = curr -> val;
  100.  
  101. curr = curr -> suc;
  102. }
  103. return mas;
  104. }
  105.  
  106. T* Min ()
  107. {
  108. Nodo <T>* curr = head -> suc;
  109. T* mi = new T;
  110. *mi = head -> val;
  111.  
  112. while (curr != NULL)
  113. {
  114. if (curr -> val < *mi)
  115. *mi = curr -> val;
  116.  
  117. curr = curr -> suc;
  118. }
  119. return mi;
  120. }
  121.  
  122. void print ()
  123. {
  124. Nodo <T>* curr = head;
  125.  
  126. while (curr != NULL)
  127. {
  128. cout << "[" << curr -> val << "]";
  129. curr = curr -> suc;
  130. }
  131. }
  132. };
  133.  
  134. int main ()
  135. {
  136. MyTable <int> t1;
  137. 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);
  138. t1.del (8); t1.del (7); t1.del (1);
  139. cout << *(t1.Max) << endl << *(t1.Min) << endl;
  140. t1.print ();
  141. return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement