Advertisement
Guest User

stack.cpp

a guest
Oct 16th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include "Stack.h"
  2. #include <iostream>
  3. #include <memory.h>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. //Stack* next = NULL; //index of first empty cell on the stack
  9.  
  10. //trzeba w jakis sposob zapisywac znacznik head, bo teraz nigdzie go nie dodaję
  11.  
  12. Stack* createStack(){
  13. //zarezerwuj wystarczajacy obszar pamieci
  14. Stack *stack = ( Stack* )malloc( sizeof( Stack ) );
  15. stack->next = NULL;
  16. //zwroc znacznik do stosu
  17. return stack;
  18. }
  19.  
  20. void push(Stack** head, char c)
  21. {
  22. //stworz nowy element typu stack
  23. Stack* el = createStack();
  24. //do nowego elementu przypisz podana wartosc oraz obecny ostatni element jako nastepny
  25. el->value = c;
  26. el->next = *head;
  27. //nowy element staje sie ostatni na liscie
  28.  
  29. *head = el;
  30. }
  31.  
  32.  
  33. char pop(Stack** head)
  34. {
  35. char c = top(head);
  36. if (c)
  37. {
  38. del(head);
  39. }
  40. else
  41. cout << "\n* Stack undefined!!!\n\n\n";
  42.  
  43. return c;
  44. }
  45. char top(Stack** head) //jesli stos pusty to nie wypisuje bledu, ale zwraca znak o kodzie 0, co odpowiada wartosci FALSE
  46. {
  47. if (!isEmpty(head))
  48. return (**head).value;
  49. return 0;
  50. }
  51. void del(Stack** head)
  52. {
  53. if (!isEmpty(head))
  54. {
  55. Stack* el = *head;
  56. *head = (**head).next;
  57. free(el);
  58. }
  59. else
  60. cout << "\n* Stack underflow!!! (del)\n\n\n";
  61.  
  62. }
  63. int isEmpty(Stack** head)
  64. {
  65. return !(**head).next;
  66. //znacznik do nastepnego elementu. jesli dojdziemy do konca bedzie !NULL wiec = 1
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement