Guest User

Untitled

a guest
Jul 19th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include "list.h"
  4.  
  5. ;using namespace std;
  6.  
  7. //////Инициализируем список/////
  8. List::List(){
  9.     Head = NULL;
  10. }
  11. /////деструктор/////
  12. List::~List(){
  13.     //Head = NULL;
  14. }
  15.  
  16. /////вставить элемент в конец/////
  17. void List::Insert(char a){
  18.     if(Empty()){  //если список пуст
  19.         Head = new ListItem();  //создаем его
  20.         Head->val = a;  //записываем новое значение
  21.         Head->next = NULL;  //указатель на след оставляем пустым
  22.     }else{
  23.         ListItem *temp;  //иначе создаем переменную временную
  24.         temp = Head;  //указатель на начало
  25.         while(temp->next){  //доходим до конца списка
  26.             temp = temp->next;
  27.         }
  28.         temp->next = new ListItem();  //создаем место в списке в конце
  29.         temp->next->val = a;  //заносим в конец элемент
  30.         temp->next->next = NULL;  //указатель на след пустой
  31.     }
  32.     len++;  //уеличиваем длину
  33. }
  34.  
  35. /////вывод на экран/////
  36. void List::Print(){
  37.     if(!Empty()){  //если список есть
  38.         ListItem *temp;  //временную переменную создаем
  39.         temp = Head;  //указатель на начало
  40.         while(temp){  //выводим каждый элемент пока не конец
  41.             cout << temp->val << " ";
  42.             temp = temp->next;
  43.         }
  44.         cout << endl;
  45.     }
  46. }
  47.  
  48. /////оператор присваивания/////
  49.  List& List::operator=(const List& L){
  50.      ListItem *temp;  //временная переменна
  51.      while(!Empty()){  //пока список есть
  52.          temp = Head;  //выполняем деструктор
  53.          Head = Head->next;
  54.          delete temp;
  55.      }
  56.      Head = L.Head;  //присваиваем новый список старому
  57.      len = L.len;
  58.      return (*this);
  59. }
  60.  
  61.  /////доступ по индексу/////
  62.  char List::operator[](int x)
  63.  {
  64.     ListItem *temp = Head;  //список на начало
  65.     int i = 0;  //переменная для цикла
  66.     //обходим цикл пока не привысим указанный индекс
  67.     while (i < x)  
  68.     {
  69.         //если след эл-т в списке отсутствует, то выходим из цикла
  70.         if (temp->next == NULL)
  71.         {
  72.             break;
  73.         }
  74.         temp = temp->next;  //переходим к след эл-ту
  75.         i++;
  76.     }
  77.     char s = temp->val;  //результат
  78.     return s;
  79.  }
  80.  
  81.  /////оператор сравнивания/////
  82.  bool List::operator==(const List& L){
  83.      if(len == L.len){  //если длины равны
  84.          ListItem *temp1, *temp2;  //создаем временные переменные
  85.          bool result = true;  //пока считаем, что списки равны
  86.          temp1 = Head;  //первый список. Указатель на начало
  87.          temp2 = L.Head;  //второй список. Указатель на начало
  88.          while(temp1 && temp2){  //пока списки не кончились
  89.              if (temp1->val != temp2->val){  //если элементы не равны
  90.                  result = false;  //возвращаем данное значение
  91.                  break;  //офф цикл
  92.              }
  93.              temp1 = temp1->next;  //сдвиг указатели на след эдементы
  94.              temp2 = temp2->next;
  95.          }
  96.          return result;  //результат проверки
  97.      }else{
  98.          return false;  //иначе не равны
  99.      } 
  100.  }
  101.  
  102.  /////Ввод с клавиатуры/////
  103.  void List::Input(){
  104.      int size;  //длина списка
  105.      char a;  //элемент
  106.      cout << "Введите длину списка" << endl;
  107.      cin >> size;  //чиатем длину
  108.      for(int i = 1; i <= size; i++){
  109.         cout << "ведите " << i << " элемент" << endl;
  110.         cin >> a;  //чиатем i-тый элемент
  111.         Insert(a);  //и заносим его в конец списка
  112.      }
  113.  }
  114.  
  115.  bool List::Empty(){
  116.      if(Head == NULL){  //если пуст
  117.          return true;  //false
  118.      }else{
  119.          return false;  //true
  120.      }
  121.  
  122. List& List::operator+(char)
  123. {
  124.  
  125. }
  126.  
  127. }
Add Comment
Please, Sign In to add comment