//by Pyjter&Pasierbix #include "stdafx.h" #include #include struct Stack { int capacity; int size; int *data; }; Stack *CreateStack(unsigned int Capacity) { if (Capacity > 0) { Stack *s = new Stack; s->capacity = Capacity; s->size = 0; s->data = new int[Capacity]; return s; } return 0; } Stack *DestroyStack(Stack *s) { if (s==0) return 0; delete[]s->data; delete s; return 0; } bool IsEmpty(const Stack *s) { if (s==0) return false; if(s->size==0) return true; return false; } bool Push(Stack *s, int value) { if (s->size < s->capacity) { s->data[s->size] = value; s->size++; return true; } return false; } int Pop(Stack *s) { if (s->size > 0) { return s->data[--s->size]; } return 0; } int main() { int wielkosc, wartosc,wybor; printf("Podaj wielkosc stosu: \n"); scanf("%d",&wielkosc); Stack *s = CreateStack(wielkosc); printf("Wielkosc stosu to : %d\n",wielkosc); do{ system ("cls"); printf("Co bys ciciol zrobic?\n"); printf("1.Dodej na stos\n"); printf("2.Sciagnij ze stosu\n"); printf("3.Wyswietl stos\n"); printf("4.Czy stos je pusty?\n"); printf("5.Zdupiom !\n"); scanf("%d",&wybor); switch(wybor) { case 1: if (s->size >= s->capacity) { printf("Tys je gupi! Juz placu na stosie ni ma!");getch();break; } else{ printf("Podaj co chcesz dodac na stos: "); scanf("%d",&wartosc); Push(s, wartosc); break;} case 2: printf("%d\n", Pop(s)); getch(); break; case 3: for(int i=s->size;i>0;i--) { printf("%d\n", s->data[i-1]); } getch(); break; case 4: if(IsEmpty(s))printf("Stos jest pusty!"); else printf("Stos nie jest pusty!"); getch(); break; case 5: s = DestroyStack(s); return 0; case 6: exit (1); } }while(true); getch(); return 0; } //by Pyjter&Pasierbix