Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename T> class List
  5. {
  6. private:
  7. // запрет на копирование и присваивание
  8. List(const List&) = delete;
  9. void operator=(const List&) = delete;
  10.  
  11. struct spisok
  12. {
  13. T d;
  14. spisok* next;
  15. };
  16. spisok* head;
  17.  
  18. public: //конструктор по умолчанию
  19. List() {
  20. head = NULL;
  21. }
  22. //конструктор с параметром Т 1
  23. List(T x) {
  24. head = new spisok;
  25. head->d = x;
  26. head->next = NULL;
  27. }
  28. //вставить элемент в начало
  29. void vNACH(T x) {
  30. spisok* z;
  31. z = new spisok;
  32. if (head == NULL) {
  33. z->d = x;
  34. z->next = NULL;
  35. head = z;
  36. }
  37. else {
  38. z->d = x;
  39. z->next = head;
  40. head = z;
  41. }
  42. }
  43. //вставить элемент в конец
  44. void vKON(T x) {
  45. spisok* z = head, * p;
  46. p = new spisok;
  47. if (head == NULL) {
  48. p->d = x;
  49. p->next = NULL;
  50. head = p;
  51. }
  52. else
  53. {
  54. while (z->next != NULL) {
  55. z = z->next;
  56. }
  57. p = new spisok;
  58. p->next = NULL;
  59. p->d = x;
  60. z->next = p;
  61. }
  62. }
  63. //удалить из конца
  64. void delkon() {
  65. spisok* z = head, * p;
  66. if (z->next == NULL)
  67. del1();
  68. else {
  69.  
  70. while (z->next->next != NULL) {
  71. z = z->next;
  72. }
  73. p = z->next;
  74. z->next = NULL;
  75. delete(p);
  76. }
  77. }
  78. // удалить элемент из начала
  79. void del1() {
  80. spisok* z;
  81. z = head;
  82. if (z == NULL) {
  83. cout << "itak pust" << endl;
  84. }
  85. else {
  86. head = head->next;
  87. delete z;
  88. }
  89. }
  90. // деструктор
  91. ~List() {
  92. cout << "destructor" << endl;
  93. while (head != NULL) {
  94. del1();
  95. }
  96. }
  97. //приведение к типу Т
  98. operator T() const {
  99. return (T)head->d;
  100. }
  101. //вывод списка
  102. void vivod() {
  103. spisok* z = head;
  104. if (head == NULL) cout << "null" << endl;
  105. else {
  106. while (z != NULL) {
  107. cout << z->d << " ";
  108. z = z->next;
  109. }
  110. }
  111. cout << endl;
  112. }
  113. };
  114. int main() {
  115. int a = 1, b = 4;
  116. List<int> z;
  117. z.vivod();
  118. z.del1();
  119. z.vNACH(3);
  120. z.vKON(9);
  121. z.vivod();
  122. List<int> c(a);
  123. c.vivod();
  124. c.vNACH(5);
  125. c.vivod();
  126. c.del1();
  127. c.vivod();
  128. c.vNACH(7);
  129. c.vKON(9);
  130. c.vivod();
  131. c.delkon();
  132. c.vivod();
  133. //List<int> x = z;
  134. //x = z;
  135. system("pause");
  136. return(0);
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement