int FIB_HEAP_DECREASE_KEY(node*H1,long x,long k) { node* y; if(H1==NULL) { printf("\nNO NODE IN THE HEAP!!! ABORTING!!!!"); return 0; } node* ptr=FIND_NODE(H1,x); if(ptr==NULL) { printf("\nTHE TARGET NODE NOT FOUND!!!!!"); return 1; } // cout<<"\nptr="<<ptr->n; if(ptr->n<k) { printf("\nTHE ENTERED KEY IS GREATER THAN THE CURRENT VALUE!!!"); return 0; } ptr->n=k; y=ptr->parent; if(y!=NULL&&ptr->n<y->n) { CUT(H1,ptr,y); CASCADE_CUT(H1,y); } if(ptr->n<H->n) H=ptr;//cout<<"\nH="<<ptr->n;} return 0; }
SGNODE* SCENEGRAPH::FindNode(const char *aNodeName, const SGNODE *aCaller) { if( NULL == aNodeName || 0 == aNodeName[0] ) return NULL; if( !m_Name.compare( aNodeName ) ) return this; FIND_NODE( SCENEGRAPH, aNodeName, m_Transforms, aCaller ); FIND_NODE( SGSHAPE, aNodeName, m_Shape, aCaller ); // query the parent if appropriate if( aCaller == m_Parent || NULL == m_Parent ) return NULL; return m_Parent->FindNode( aNodeName, this ); }
node* FIND_NODE(node* H,long k) { node* x=H; x->C='Y'; node* p=NULL; if(x->n==k) { p=x; x->C='N'; return p; } if(x->child!=NULL&&p==NULL) { p=FIND_NODE(x->child,k); } if((x->right)->C!='Y'&&p==NULL) { p=FIND_NODE(x->right,k); } x->C='N'; return p; }