Advertisement
Guest User

Untitled

a guest
May 20th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4.  
  5. typedef struct stackNode
  6. {
  7. int Data;
  8. struct stackNode* Next;
  9. }stackNodePtr;
  10.  
  11. int menu();
  12. void push(char elem);
  13. void pop();
  14. void print();
  15.  
  16. stackNodePtr* top = NULL;
  17.  
  18. int main()
  19. {
  20. setlocale(0, "");
  21. char elem;
  22. int kol, f = 0;
  23.  
  24.  
  25. printf("Введите количество записей: \n");
  26. scanf_s("%d", &kol);
  27.  
  28. while (1)
  29. {
  30. switch (menu())
  31. {
  32. case 1:
  33. system("cls");
  34. if (f == kol)
  35. {
  36. printf("Стек полон.\n");
  37. break;
  38. }
  39. while (f < kol)
  40. {
  41. printf("Введите числа: ");
  42. scanf_s("\n%d", &elem);
  43. push(elem);
  44. f++;
  45. }
  46. break;
  47. case 2:
  48. system("cls");
  49. if (top != NULL)
  50. {
  51. kol--;
  52. pop();
  53. printf("Элемент удален.\n");
  54. f--;
  55. }
  56. else printf("Стек пустой.\n");
  57. break;
  58. case 3: system("cls"); print(); break;
  59. case 4: printf_s("Размер стека: %d", kol); break;
  60. case 5: return 0;
  61. menu(); break;
  62. }
  63. }
  64. }
  65.  
  66.  
  67. int menu()
  68. {
  69. int x;
  70. printf("\n\tМеню:\n");
  71. printf("1 - Добавить элементы в стек.\n");
  72. printf("2 - Удалить последний элемент.\n");
  73. printf("3 - Вывод стека.\n");
  74. printf("4 - Размер стека.\n");
  75. printf("5 - Завершение программы.\n");
  76. printf("Вы выбрали: ");
  77. scanf_s("%d", &x);
  78. return x;
  79. }
  80.  
  81. void push(char elem)
  82. {
  83. stackNodePtr* p;
  84. p = (stackNodePtr*)malloc(sizeof(stackNodePtr));
  85. if (p != 0)
  86. {
  87. p->Data = elem;
  88. p->Next = top;
  89. top = p;
  90. }
  91. else
  92. printf("%c Не создан. Память не выделилась!", elem);
  93. }
  94.  
  95. void pop()
  96. {
  97. stackNodePtr* p;
  98. if (top != NULL)
  99. {
  100. p = top;
  101. top = top->Next;
  102. free(p);
  103. system("pause");
  104. }
  105. }
  106.  
  107. void print()
  108. {
  109. stackNodePtr* p = top;
  110. if (p == NULL) printf("Стек пуст.\n");
  111. else printf("Стек\n");
  112. while (p != NULL)
  113. {
  114. printf("%d\n", p->Data);
  115. p = p->Next;
  116. }
  117. system("pause");
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement