Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include "list.h"
- ;using namespace std;
- //////Инициализируем список/////
- List::List(){
- Head = NULL;
- }
- /////деструктор/////
- List::~List(){
- //Head = NULL;
- }
- /////вставить элемент в конец/////
- void List::Insert(char a){
- if(Empty()){ //если список пуст
- Head = new ListItem(); //создаем его
- Head->val = a; //записываем новое значение
- Head->next = NULL; //указатель на след оставляем пустым
- }else{
- ListItem *temp; //иначе создаем переменную временную
- temp = Head; //указатель на начало
- while(temp->next){ //доходим до конца списка
- temp = temp->next;
- }
- temp->next = new ListItem(); //создаем место в списке в конце
- temp->next->val = a; //заносим в конец элемент
- temp->next->next = NULL; //указатель на след пустой
- }
- len++; //уеличиваем длину
- }
- /////вывод на экран/////
- void List::Print(){
- if(!Empty()){ //если список есть
- ListItem *temp; //временную переменную создаем
- temp = Head; //указатель на начало
- while(temp){ //выводим каждый элемент пока не конец
- cout << temp->val << " ";
- temp = temp->next;
- }
- cout << endl;
- }
- }
- /////оператор присваивания/////
- List& List::operator=(const List& L){
- ListItem *temp; //временная переменна
- while(!Empty()){ //пока список есть
- temp = Head; //выполняем деструктор
- Head = Head->next;
- delete temp;
- }
- Head = L.Head; //присваиваем новый список старому
- len = L.len;
- return (*this);
- }
- /////доступ по индексу/////
- char List::operator[](int x)
- {
- ListItem *temp = Head; //список на начало
- int i = 0; //переменная для цикла
- //обходим цикл пока не привысим указанный индекс
- while (i < x)
- {
- //если след эл-т в списке отсутствует, то выходим из цикла
- if (temp->next == NULL)
- {
- break;
- }
- temp = temp->next; //переходим к след эл-ту
- i++;
- }
- char s = temp->val; //результат
- return s;
- }
- /////оператор сравнивания/////
- bool List::operator==(const List& L){
- if(len == L.len){ //если длины равны
- ListItem *temp1, *temp2; //создаем временные переменные
- bool result = true; //пока считаем, что списки равны
- temp1 = Head; //первый список. Указатель на начало
- temp2 = L.Head; //второй список. Указатель на начало
- while(temp1 && temp2){ //пока списки не кончились
- if (temp1->val != temp2->val){ //если элементы не равны
- result = false; //возвращаем данное значение
- break; //офф цикл
- }
- temp1 = temp1->next; //сдвиг указатели на след эдементы
- temp2 = temp2->next;
- }
- return result; //результат проверки
- }else{
- return false; //иначе не равны
- }
- }
- /////Ввод с клавиатуры/////
- void List::Input(){
- int size; //длина списка
- char a; //элемент
- cout << "Введите длину списка" << endl;
- cin >> size; //чиатем длину
- for(int i = 1; i <= size; i++){
- cout << "ведите " << i << " элемент" << endl;
- cin >> a; //чиатем i-тый элемент
- Insert(a); //и заносим его в конец списка
- }
- }
- bool List::Empty(){
- if(Head == NULL){ //если пуст
- return true; //false
- }else{
- return false; //true
- }
- List& List::operator+(char)
- {
- }
- }
Add Comment
Please, Sign In to add comment