Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- typedef struct stackNode
- {
- int Data;
- struct stackNode* Next;
- }stackNodePtr;
- int menu();
- void push(char elem);
- void pop();
- void print();
- stackNodePtr* top = NULL;
- int main()
- {
- setlocale(0, "");
- char elem;
- int kol, f = 0;
- printf("Введите количество записей: \n");
- scanf_s("%d", &kol);
- while (1)
- {
- switch (menu())
- {
- case 1:
- system("cls");
- if (f == kol)
- {
- printf("Стек полон.\n");
- break;
- }
- while (f < kol)
- {
- printf("Введите числа: ");
- scanf_s("\n%d", &elem);
- push(elem);
- f++;
- }
- break;
- case 2:
- system("cls");
- if (top != NULL)
- {
- kol--;
- pop();
- printf("Элемент удален.\n");
- f--;
- }
- else printf("Стек пустой.\n");
- break;
- case 3: system("cls"); print(); break;
- case 4: printf_s("Размер стека: %d", kol); break;
- case 5: return 0;
- menu(); break;
- }
- }
- }
- int menu()
- {
- int x;
- printf("\n\tМеню:\n");
- printf("1 - Добавить элементы в стек.\n");
- printf("2 - Удалить последний элемент.\n");
- printf("3 - Вывод стека.\n");
- printf("4 - Размер стека.\n");
- printf("5 - Завершение программы.\n");
- printf("Вы выбрали: ");
- scanf_s("%d", &x);
- return x;
- }
- void push(char elem)
- {
- stackNodePtr* p;
- p = (stackNodePtr*)malloc(sizeof(stackNodePtr));
- if (p != 0)
- {
- p->Data = elem;
- p->Next = top;
- top = p;
- }
- else
- printf("%c Не создан. Память не выделилась!", elem);
- }
- void pop()
- {
- stackNodePtr* p;
- if (top != NULL)
- {
- p = top;
- top = top->Next;
- free(p);
- system("pause");
- }
- }
- void print()
- {
- stackNodePtr* p = top;
- if (p == NULL) printf("Стек пуст.\n");
- else printf("Стек\n");
- while (p != NULL)
- {
- printf("%d\n", p->Data);
- p = p->Next;
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement