c++ - Issue with pushing a Struct object into queue -
i have structure , want create queue of struct. have problem pushing new element. please.
#include <iostream> #include <queue> #include <deque> #include <list> using namespace std; struct node { node *left, *right; int key; }; queue<node> q; void updatelevel( node &n, int &level){ if(n.left!=null && n.right!=null){ level+=2; q.push(n.left); q.push(n.right); } else if(n.left!=null || n.right!=null){ level++; if(n.left!=null) q.push(n.left); if(n.right!=null) q.push(n.right); } }; void printtree(node root){ //if(root!=null){ q.push(root); node n; while(!q.empty()){ n =q.pop(); updatelevel(n,nextlevel); curlevel--; cout<<n.key; if(curlevel<=0){ cout<<endl; curlevel=nextlevel; nextlevel=0; } } //} }; int main() { node roottree; printtree(roottree); return 0;
}
i calling function main. have got error checking in if condition null. please
at least 1 error here:
queue<node> q; //a queue of node
however:
q.push(n.left); q.push(n.right); //n.left , n.right node*.
you pushing node*
queue accepts node
.
you may have other errors, code have shown, @ least 1 of them.
edit: based on updated code.
node roottree;
you did not define constructor in node
, members of roottree
not initialized. left
, right
not null
start with. therefore, useless check null
on them.
updatelevel(n,nextlevel);
what nextlevel
, seems not defined.
try set breakpoints in code , locate problem. error says if condition check
has problem, root cause may somewhere else.
Comments
Post a Comment