c++ - Stack with push and pop functions not working -


this program.

#include<iostream> #include<string>  using namespace std;  struct stack {     int inf;     stack* link; } *start, *p;  void push(stack*, stack*, int); void pop(stack*, stack*);  int main() {     int s = 0;     string thing;      cin >> thing;     while (thing != "end")     {         if (thing == "push")         {             push(start, p, s);         }         if (thing == "pop")         {             pop(start, p);         }         cin >> thing;     }     return 0;  }  void push(stack *start, stack *p, int s) {          cin >> s;          p = start;         start = new stack;         start->inf = s;         start->link = p;          cout << "pushed " << start->inf << endl; }  void pop(stack *start, stack *p) {       cout << "popped " << start->inf;     p = start;     start = start->link;     delete p;   } 

it's simple program allow me push , pop items , stack, reason pop() won't work. if add if(start) before pop skips it, making me think stack somehow becomes null after push completed. works until reaches cout << "popped " << start->inf; line, when crashes (no error message) again makes me think stack becomes null before reaches pop(). suggestions?

first, both of function's signature weird:

void push(stack *start, stack *p, int s) void pop(stack *start, stack *p) 

assuming start points top of stack, should discard p. should local variable function, not parameter.

second, let's see push implementation:

p = start; start = new stack; start->inf = s; start->link = p; 

this 1 looks good. missed start declared pointer stack, , changing pointer inside function, value parameter instead of reference. current signature, can change start points to, not start itself. can either declare pointer pointer stack, , change body accordingly (you need double dereference assigning inf , link) or use reference parameter adding & before parameter name. same case applies pop function.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -