Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. #include <iostream>
  2. #include "myStack.h"
  3. #include <fstream>
  4. #include <cstring>
  5. using namespace std;
  6. void push(int x, Stack* myStk) //Добавление элемента х в стек
  7. {
  8. Stack* e = new Stack; //выделение памяти для нового элемента
  9. e->data = x; //запись элемента x в поле v
  10. e->next = myStk->head; //перенос вершины на следующий элемент
  11. myStk->head = e; //сдвиг вершины на позицию вперед
  12.  
  13. }
  14. int pop(Stack* myStk) //Извлечение (удаление) элемента из стека
  15. {
  16. if (myStk->head == NULL)
  17. {
  18. cout << "Стек пуст!" << endl;
  19. return -1; //если стек пуст - возврат -1
  20. }
  21. else
  22. {
  23. Stack* e = myStk->head; //е - переменная для хранения адреса элемента
  24. int a = myStk->head->data; //запись числа из поля data в переменную a
  25. myStk->head = myStk->head->next; //перенос вершины
  26. delete e; //удаление временной переменной
  27. return a; //возврат значения удаляемого элемента
  28. }
  29. }
  30. void show(Stack* myStk) //Вывод стека
  31. {
  32. Stack* e = myStk->head; //объявляется указатель на вершину стека
  33. int a;
  34. if (e == NULL)
  35. cout << "Стек пуст!" << endl;
  36. while (e != NULL)
  37. {
  38. a = e->data; //запись значения в переменную a
  39. cout << a << " ";
  40. e = e->next;
  41. }
  42. cout << endl;
  43. }
  44. void toFile(Stack* myStk, const char filename[])
  45. {
  46. int dat;
  47. Stack* e = myStk->head;
  48. ofstream frm(filename);
  49. if (frm.fail())
  50. {
  51. cout << "\n Ошибка открытия файла";
  52. exit(1);
  53. }
  54. while (e)
  55. {
  56. dat = e->data;
  57. frm << '\t' << dat;
  58. e = e->next;
  59. }
  60. frm.close();
  61. cout << "Список записан в файл mList.dat\n";
  62. }
  63. void fromFile(Stack* myStk) //Считывание из файла
  64. {
  65. int a;
  66. //Stack buf, * first = nullptr;
  67. ifstream frm("Stack0.txt");
  68. if (frm.fail())
  69. {
  70. cout << "\n Ошибка открытия файла";
  71. exit(1);
  72. }
  73.  
  74. while (!frm.eof())
  75. {
  76. frm >> a;
  77. push(a, myStk);
  78. }
  79. //cout << "-->NULL" << endl;
  80. frm.close();
  81. //p = first;
  82. cout << "\nСписок считан из файла Stack.txt\n";
  83. }
  84. void sort(Stack* myStk, Stack* Stk1, Stack* Stk2) //Вывод стека
  85. {
  86. Stack* e = myStk->head; //объявляется указатель на вершину стека
  87. int a, num = 1, min;
  88. if (e == NULL) {
  89. cout << "Стек пуст!" << endl;
  90. }
  91. a = e->data;
  92. min = a;
  93. e = e->next;
  94. num++;
  95. while (e != NULL) {
  96. a = e->data;
  97. if (a < min) {
  98. min = a;
  99. }
  100. e = e->next;
  101. num++;
  102.  
  103. }
  104. cout << endl << num << '\t' << min;
  105. }
  106. void clean(Stack* myStk) //Вывод стека
  107. {
  108. Stack* e = myStk->head; //объявляется указатель на вершину стека
  109. while (e != NULL)
  110. {
  111. if (myStk->head == NULL)
  112. {
  113. cout << "Стек пуст!" << endl;
  114. e = NULL;
  115. }
  116. else
  117. {
  118. Stack* e = myStk->head; //е - переменная для хранения адреса элемента
  119. int a = myStk->head->data; //запись числа из поля data в переменную a
  120. myStk->head = myStk->head->next; //перенос вершины
  121. delete e; //удаление временной переменной
  122. }
  123. }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement