Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "myStack.h"
- #include <fstream>
- #include <cstring>
- using namespace std;
- void push(int x, Stack* myStk) //Добавление элемента х в стек
- {
- Stack* e = new Stack; //выделение памяти для нового элемента
- e->data = x; //запись элемента x в поле v
- e->next = myStk->head; //перенос вершины на следующий элемент
- myStk->head = e; //сдвиг вершины на позицию вперед
- }
- int pop(Stack* myStk) //Извлечение (удаление) элемента из стека
- {
- if (myStk->head == NULL)
- {
- cout << "Стек пуст!" << endl;
- return -1; //если стек пуст - возврат -1
- }
- else
- {
- Stack* e = myStk->head; //е - переменная для хранения адреса элемента
- int a = myStk->head->data; //запись числа из поля data в переменную a
- myStk->head = myStk->head->next; //перенос вершины
- delete e; //удаление временной переменной
- return a; //возврат значения удаляемого элемента
- }
- }
- void show(Stack* myStk) //Вывод стека
- {
- Stack* e = myStk->head; //объявляется указатель на вершину стека
- int a;
- if (e == NULL)
- cout << "Стек пуст!" << endl;
- while (e != NULL)
- {
- a = e->data; //запись значения в переменную a
- cout << a << " ";
- e = e->next;
- }
- cout << endl;
- }
- void toFile(Stack* myStk, const char filename[])
- {
- int dat;
- Stack* e = myStk->head;
- ofstream frm(filename);
- if (frm.fail())
- {
- cout << "\n Ошибка открытия файла";
- exit(1);
- }
- while (e)
- {
- dat = e->data;
- frm << '\t' << dat;
- e = e->next;
- }
- frm.close();
- cout << "Список записан в файл mList.dat\n";
- }
- void fromFile(Stack* myStk) //Считывание из файла
- {
- int a;
- //Stack buf, * first = nullptr;
- ifstream frm("Stack0.txt");
- if (frm.fail())
- {
- cout << "\n Ошибка открытия файла";
- exit(1);
- }
- while (!frm.eof())
- {
- frm >> a;
- push(a, myStk);
- }
- //cout << "-->NULL" << endl;
- frm.close();
- //p = first;
- cout << "\nСписок считан из файла Stack.txt\n";
- }
- void sort(Stack* myStk, Stack* Stk1, Stack* Stk2) //Вывод стека
- {
- Stack* e = myStk->head; //объявляется указатель на вершину стека
- int a, num = 1, min;
- if (e == NULL) {
- cout << "Стек пуст!" << endl;
- }
- a = e->data;
- min = a;
- e = e->next;
- num++;
- while (e != NULL) {
- a = e->data;
- if (a < min) {
- min = a;
- }
- e = e->next;
- num++;
- }
- cout << endl << num << '\t' << min;
- }
- void clean(Stack* myStk) //Вывод стека
- {
- Stack* e = myStk->head; //объявляется указатель на вершину стека
- while (e != NULL)
- {
- if (myStk->head == NULL)
- {
- cout << "Стек пуст!" << endl;
- e = NULL;
- }
- else
- {
- Stack* e = myStk->head; //е - переменная для хранения адреса элемента
- int a = myStk->head->data; //запись числа из поля data в переменную a
- myStk->head = myStk->head->next; //перенос вершины
- delete e; //удаление временной переменной
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement