lashrone1

push

Jun 2nd, 2019
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <checkValid.h>
  4. #include <windows.h>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. struct st{
  10. int num;
  11. st* next;
  12. };
  13.  
  14. void s_push(st* top, int in);
  15. void s_del(st* top);
  16. void s_print(st* top);
  17. void initStack(st* first,int num);
  18.  
  19. void arr_push(int* arr,int in,int counter);
  20.  
  21. void addCell(int* arr,int counter);
  22.  
  23. void arr_print(int* arr,int counter);
  24. void arr_del(int* arr,int counter);
  25.  
  26. void l_push(st* first,int num);
  27. void initLine(st* first,int num);
  28. void l_print(st* first);
  29. void l_del(st* first);
  30.  
  31. void al_push(int* arr,int in,int counter);
  32. void al_print(int* arr, int counter);
  33. void al_del(int* arr,int counter);
  34.  
  35. int menu();
  36. int menu2();
  37.  
  38.  
  39. bool stackFlag = false;
  40. bool lineFlag = false;
  41.  
  42.  
  43. int main()
  44. {
  45. SetConsoleCP(1251);
  46. SetConsoleOutputCP(1251);
  47.  
  48. int scounter = 5;
  49. int lcounter = 5;
  50.  
  51. st* stack = new st;
  52. st* line = new st;
  53. int* arrSt = new int[scounter];
  54. int* arrL = new int[lcounter];
  55.  
  56. for(int i =0;i<scounter;i++){
  57. arrSt[i] = 0;
  58. }
  59.  
  60. for(int i =0;i<lcounter;i++){
  61. arrL[i] = 0;
  62. }
  63.  
  64. int i;
  65. st* q;
  66. bool iterator_flag = true;
  67.  
  68. while(true){
  69. switch(menu()){
  70. case 1:
  71. while(iterator_flag){
  72. switch(menu2()){
  73. case 1:
  74. cout << "Введите значение : ";
  75. cin >> i;
  76. arr_push(arrSt,i,scounter);
  77. break;
  78.  
  79. case 2:
  80. arr_del(arrSt,scounter);
  81. cout << "Удалено\n";
  82. break;
  83.  
  84. case 3:
  85. arr_print(arrSt,scounter);
  86. cout << "\n";
  87. break;
  88.  
  89. case 4:
  90. cout << arrSt[0] << "\n";
  91. break;
  92.  
  93. case 5:
  94. for(int p = 0;p<scounter;p++){
  95. arrSt[p] = 0;
  96. }
  97. cout << "Очишенно\n";
  98. break;
  99.  
  100. case 6:
  101. cout << "Проверенно";
  102. break;
  103.  
  104. case 7:
  105. iterator_flag = false;
  106. break;
  107. }
  108. }
  109. break;
  110.  
  111. case 2:
  112. while(iterator_flag){
  113. switch(menu2()){
  114. case 1:
  115. cout << "Введите значение : ";
  116. cin >> i;
  117. s_push(stack,i);
  118. break;
  119.  
  120. case 2:
  121. s_del(stack);
  122. cout << "Удалено\n";
  123. break;
  124.  
  125. case 3:
  126. s_print(stack);
  127. cout << "\n";
  128. break;
  129.  
  130. case 4:
  131. cout << stack->num;
  132. break;
  133.  
  134. case 5:
  135. while(stack != NULL){
  136. q = stack->next;
  137. stack = NULL;
  138. stack = q;
  139. }
  140. cout << "Очишенно\n";
  141. break;
  142.  
  143. case 6:
  144. cout << "Проверенно";
  145. break;
  146.  
  147. case 7:
  148. iterator_flag = false;
  149. break;
  150. }
  151. }
  152. break;
  153.  
  154. case 3:
  155. while(iterator_flag){
  156. switch(menu2()){
  157. case 1:
  158. cout << "Введите значение : ";
  159. cin >> i;
  160. al_push(arrL,i,lcounter);
  161. break;
  162.  
  163. case 2:
  164. al_del(arrL,lcounter);
  165. cout << "Удалено\n";
  166. break;
  167.  
  168. case 3:
  169. al_print(arrL,lcounter);
  170. break;
  171.  
  172. case 4:
  173. cout << arrL[0];
  174. break;
  175.  
  176. case 5:
  177. for(int p = 0;p<lcounter;p++){
  178. arrL[p] = 0;
  179. }
  180. cout << "Очишенно\n";
  181. break;
  182.  
  183. case 6:
  184. cout << "Проверенно";
  185. break;
  186.  
  187. case 7:
  188. iterator_flag = false;
  189. break;
  190. }
  191. }
  192. break;
  193.  
  194. case 4:
  195. while(iterator_flag){
  196. switch(menu2()){
  197. case 1:
  198. cout << "Введите значение : ";
  199. cin >> i;
  200. l_push(line,i);
  201. break;
  202.  
  203. case 2:
  204. l_del(line);
  205. cout << "Удалено\n";
  206. break;
  207.  
  208. case 3:
  209. l_print(line);
  210. break;
  211.  
  212. case 4:
  213. cout << line->num;
  214. break;
  215.  
  216. case 5:
  217. while(line != NULL){
  218. q = line->next;
  219. line = NULL;
  220. line = q;
  221. }
  222. cout << "Очишенно\n";
  223. break;
  224.  
  225. case 6:
  226. cout << "Проверенно";
  227. break;
  228.  
  229. case 7:
  230. iterator_flag = false;
  231. break;
  232. }
  233. }
  234. break;
  235.  
  236. case 5:
  237. return 0;
  238. break;
  239.  
  240. }
  241. }
  242.  
  243. }
  244.  
  245. void s_push(st* top, int in){
  246. if(stackFlag == false){
  247. initStack(top,in);
  248. }else{
  249. st* q = new st;
  250. q->num = top->num;
  251. q->next = top->next;
  252. top->next = q;
  253. top->num = in;
  254. }
  255. }
  256.  
  257. void s_del(st* top){
  258. if(top->next == NULL){
  259. top ->num = NULL;
  260. stackFlag = false;
  261. }else{
  262. st* q = top->next;
  263. top->num = q->num;
  264. top->next = q->next;
  265. }
  266. }
  267.  
  268. void s_print(st* top){
  269. st* q = top;
  270.  
  271. do{
  272. cout << q->num << " ";
  273. q = q->next;
  274. }while(q != NULL);
  275. }
  276.  
  277. void initStack(st* top,int num){
  278. top->num = num;
  279. top->next = NULL;
  280. stackFlag = true;
  281. }
  282.  
  283. void arr_push(int* arr,int in,int counter){
  284. bool overflow_flag = true;
  285. for(int i = counter;i>=0;i--){
  286. if(arr[i] == 0){
  287. arr[i] = in;
  288. overflow_flag = false;
  289. break;
  290. }
  291. }
  292.  
  293. if(overflow_flag == true){
  294. addCell(arr,counter);
  295. arr[4] = in;
  296. }
  297. }
  298.  
  299. void addCell(int* arr,int counter){
  300. int* tmp = new int[counter+5];
  301.  
  302. for(int i = 0;i<counter+5;i++){
  303. tmp[i] = 0;
  304. }
  305.  
  306. for(int i = 0;i<counter;i++){
  307. tmp[i+5] = arr[i];
  308. }
  309. delete [] arr;
  310. arr = tmp;
  311. counter+=5;
  312. }
  313.  
  314. void arr_print(int* arr,int counter){
  315. cout << "\n";
  316. for(int i = 0;i<counter;i++){
  317. cout << arr[i] << " ";
  318. }
  319. }
  320.  
  321. void arr_del(int* arr,int counter){
  322. for(int i = 0;i<counter;i++){
  323. if(arr[i]!=0){
  324. arr[i] = 0;
  325. break;
  326. }
  327. }
  328. }
  329.  
  330.  
  331. void l_push(st* first,int num){
  332. if(lineFlag == false){
  333. initLine(first,num);
  334. }else{
  335. st* q = new st;
  336. st* p = first;
  337.  
  338. while(p->next != NULL){
  339. p = p->next;
  340. }
  341.  
  342. p->next = q;
  343. q->num = num;
  344. q->next = NULL;
  345. }
  346. }
  347.  
  348. void initLine(st* first,int num){
  349. first->num = num;
  350. first->next = NULL;
  351. lineFlag = true;
  352. }
  353.  
  354. void l_print(st* first){
  355. st* p = first;
  356. while(p != NULL){
  357. cout << p->num << " ";
  358. p = p->next;
  359. }
  360. }
  361.  
  362. void l_del(st* first){
  363. st* q = first->next;
  364.  
  365. delete first;
  366.  
  367. first = q;
  368. }
  369.  
  370. void al_push(int* arr,int in,int counter){
  371. bool overflow_flag = true;
  372. for(int i = 0;i<counter;i++){
  373. if(arr[i] == 0){
  374. arr[i] = in;
  375. overflow_flag = false;
  376. break;
  377. }
  378.  
  379. if(overflow_flag == true){
  380. addCell(arr,counter);
  381. arr[counter+5] = in;
  382. }
  383. }
  384. }
  385.  
  386. void al_print(int* arr, int counter){
  387. for(int i = 0;i<counter;i++){
  388. cout << arr[i] << " ";
  389. }
  390. }
  391.  
  392. void al_del(int* arr,int counter){
  393. for(int i = 0;i<counter-1;i++){
  394. arr[i] = arr[i+1];
  395. }
  396. }
  397.  
  398. int menu(){
  399. int read;
  400.  
  401. cout << "1 Стек через массив\n";
  402. cout << "2 Стек через список\n";
  403. cout << "3 Очередь через массив\n";
  404. cout << "4 Очередь через список\n";
  405. cout << "5 Выход\n";
  406.  
  407. while(checkValid() == false){}
  408. read = temp;
  409.  
  410. return read;
  411. }
  412.  
  413. int menu2(){
  414. int read;
  415.  
  416. cout << "1 Вставить\n";
  417. cout << "2 Удалить\n";
  418. cout << "3 Печать\n";
  419. cout << "4 Показать верхний\n";
  420. cout << "5 Очистка\n";
  421. cout << "6 Проверить пусто ли \n";
  422. cout << "7 Назад\n";
  423.  
  424. while(checkValid() == false){}
  425. read = temp;
  426.  
  427. return read;
  428. }
Add Comment
Please, Sign In to add comment