mahdi.manian
چهارشنبه 13 خرداد 1394, 14:18 عصر
با عرض سلام.
بنده تابعی به صورت بازگشتی نوشته ام. با بررسی خط به خط تابع توسط کامپایلر این تابع به درستی کار می کنه ولی پس از اینکه به دستور return; رسیدیم که می خواهیم از تابع خارج شود، این اتفاق نمی افتد و خط های دیگری از برنامه اجرا می شود سپس خارج می شود که این اتفاق باعث می شود مقدار های اشاره گر ها تغییر کند و خراب شود.
ممنون میشم راهنمایی کنید.
struct tree_node
{
int info;
tree_node *left, *right;
};
tree_node *par=NULL;
void search_bst(tree_node *r, tree_node *p) {
if(r)
{
if(r->info == p->info) {
p=r;
r=NULL;
return;
}
else if(p->info <r->info) {
par=r;
search_bst(r->left, p);
}
else {
par=r;
search_bst(r->right, p);
}
}
else
return;
}
بنده تابعی به صورت بازگشتی نوشته ام. با بررسی خط به خط تابع توسط کامپایلر این تابع به درستی کار می کنه ولی پس از اینکه به دستور return; رسیدیم که می خواهیم از تابع خارج شود، این اتفاق نمی افتد و خط های دیگری از برنامه اجرا می شود سپس خارج می شود که این اتفاق باعث می شود مقدار های اشاره گر ها تغییر کند و خراب شود.
ممنون میشم راهنمایی کنید.
struct tree_node
{
int info;
tree_node *left, *right;
};
tree_node *par=NULL;
void search_bst(tree_node *r, tree_node *p) {
if(r)
{
if(r->info == p->info) {
p=r;
r=NULL;
return;
}
else if(p->info <r->info) {
par=r;
search_bst(r->left, p);
}
else {
par=r;
search_bst(r->right, p);
}
}
else
return;
}