Ejemplo n.º 1
0
Archivo: fbh.c Proyecto: nphuc/alg
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;
    }
Ejemplo n.º 2
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 );
}
Ejemplo n.º 3
0
Archivo: fbh.c Proyecto: nphuc/alg
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; 
}