Advertisement
MaPV

2_2_shabloni_spiska

Sep 23rd, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <fstream>
  5. #include <cstdlib>
  6. using namespace std;
  7.  
  8. template <typename T> class List{
  9. private:
  10.     struct element{
  11.         T x; //Значения Х передаются в список
  12.         element * next;
  13.     };
  14.     element *Head;
  15. public:
  16.     List (){ Head = NULL; } //конструктор пустого списка
  17.     ~List ();   //destruction
  18.  
  19.     void Add (T value); //Добавляет эл-ты в список
  20.     void Show (); //выводит список
  21.     void Del (); //удаляет первый элемент списка
  22.     void Add_END (T value); //Вставка эл-та в конец списка
  23.     void Del_END ();
  24. };
  25.  
  26.  
  27.  
  28.  
  29. template <typename T> void List<T>::Add (T value){
  30.     element *tmp = new element;
  31.     tmp->x = value;
  32.     tmp->next = Head;
  33.     Head = tmp;
  34. }
  35. template <typename T> void List<T>::Add_END (T value){
  36. element *last=Head;
  37. while (last->next)last=last->next;
  38. element *tmp = new element;
  39. tmp->x=value;
  40. tmp->next=NULL;
  41. last->next=tmp;
  42. }
  43.  
  44. template <typename T> void List<T>::Del (){
  45.     element *tmp = Head;
  46.     Head = Head->next;
  47.     delete tmp;
  48.     return;
  49. }
  50. template <typename T> void List<T>::Del_END (){
  51.     element *tmp = Head;
  52.     element *tmp_prev=new element;
  53.     while (tmp->next){
  54.         tmp_prev=tmp;
  55.         tmp = tmp->next;
  56.         }
  57. delete tmp;
  58. tmp=NULL;
  59. tmp_prev->next=NULL;   
  60. return;
  61. }
  62.  
  63. template <typename T> void List<T>::Show (){
  64.     element *tmp = new element;
  65.     tmp = Head;
  66.     cout << "VAW SPISOK:  ";
  67.  
  68.     while (tmp != NULL){
  69.         cout << tmp->x << " ";
  70.         tmp = tmp->next;
  71.     }
  72.     cout << "\n" << endl;
  73. }
  74.  
  75. template <typename T> List<T>::~List (){
  76.  
  77.     while (Head != NULL){
  78.         element*tmp = Head->next;
  79.         delete Head;
  80.         Head = tmp;
  81.     }
  82. }
  83.  
  84.  
  85. int main (){
  86.     List <int> myList;
  87.     int N; //число эл-ов в списке
  88.     int x; //элементы списка
  89.     cout << "vvedite kol-vo el-ov spiska: ";
  90.     cin >> N;
  91.     for (int i = 0; i < N; i++){
  92.         cout << "vvedite " << i + 1 << "element spiska: ";
  93.         cin >> x;
  94.         myList.Add (x);
  95.     }  //vvod N el-ov spiska
  96.     myList.Show ();
  97.     cout << "delete 1st element, ";
  98.     myList.Del ();
  99.     myList.Show ();
  100.     cout << "delete last element, ";
  101.     myList.Del_END ();
  102.     myList.Show ();
  103.    
  104.     int y; //last element
  105.     cout<<"vvedite posledniy element: ";
  106.     cin>> y;
  107.     myList.Add_END(y);
  108.     myList.Show();
  109.     system ("pause");
  110. }
  111.  
  112.  
  113. ////http://cppstudio.com/post/5188/
  114. //http://ci-plus-plus-snachala.ru/?p=57
  115. //http://www.codenet.ru/progr/cpp/dlist.php
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement