Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. /*НАША СТРУКТУРА*/
  5. struct List
  6. {
  7.     int x; //Элемент стека
  8.     List *Next, *Head; //Вершина стека и указатель на следующий элемент
  9. };
  10.  
  11. /*ФУНКЦИЯ ДОБАВЛЕНИЯ ЭЛЕМЕНТА В СТЕК*/
  12. void Add(int x, List *&MyList) //Принимаем элемент стека и указатель на стек, при этом говорим, что принимаемый указатель будет сам по себе указателем
  13. {
  14.     List *temp = new List; //Выделяем память для нового элемента
  15.     temp->x = x; //Записываем в поле x принимаемый в функцию элемент x
  16.     temp->Next = MyList->Head; //Указываем, что следующий элемент это предыдущий
  17.     MyList->Head = temp; //Сдвигаем голову на позицию вперед
  18. }
  19.  
  20. /*ФУНКЦИЯ ОТОБРАЖЕНИЯ СТЕКА*/
  21. void Show(List *MyList) //Нужен только сам стек
  22. {
  23.     List *temp = MyList->Head; //Объявляем указатель и Указываем ему, что его позиция в голове стека
  24.     //с помощью цикла проходим по всему стеку
  25.     while (temp != NULL) //выходим при встрече с пустым полем
  26.     {
  27.         cout << temp->x << " ";                         //Выводим на экран элемент стека
  28.         temp = temp->Next;                              //Переходим к следующему элементу
  29.     }
  30. }
  31.  
  32. /*ФУНКЦИЯ УДАЛЕНИЯ СТЕКА ИЗ ПАМЯТИ*/
  33. void ClearList(List *MyList)
  34. {
  35.     while (MyList->Head != NULL)                        //Пока по адресу не пусто
  36.     {
  37.         List *temp = MyList->Head->Next;                    //Временная переменная для хранения адреса следующего элемента
  38.         delete MyList->Head;                                //Освобождаем адрес обозначающий начало
  39.         MyList->Head = temp;                                //Меняем адрес на следующий
  40.     }
  41. }
  42.  
  43. int main()
  44. {
  45.     List *MyList = new List; //Выделяем память для стека
  46.     MyList->Head = NULL; //Во избежание ошибок инициализируем первый элемент
  47.     int elm, n;
  48.     cout << "Введите количество элементов: ";
  49.     cin >> n;
  50.     cout << "Введите элементы: ";
  51.     for (int i = 0; i < n; i++) cin >> elm, Add(elm, MyList); //Заносим данные в стек
  52.     Show(MyList); //Выводим стек на экран
  53.     ClearList(MyList); //Очищаем память.
  54.     delete MyList->Head;
  55.     delete MyList;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement