Exemple #1
0
void changeRoot(Graph *graph, int index)
{
   bool is_root = graph->nodes.items[index].root;
   if(is_root) removeRootNode(graph, index);
   else addRootNode(graph, index);
   graph->nodes.items[index].root = !is_root;
}
Exemple #2
0
void removeNode(Graph *graph, int index)
{   
   Node *node = getNode(graph, index);  
   assert(node->indegree == 0 && node->outdegree == 0);
   if(node->out_edges.items != NULL) free(node->out_edges.items);
   if(node->in_edges.items != NULL) free(node->in_edges.items); 
   if(node->root) removeRootNode(graph, index);

   removeHostList(node->label.list);
   
   removeFromNodeArray(&(graph->nodes), index);
   graph->number_of_nodes--;
}
bool BinarySearchTree::removeNode(METADATA** node, char* key)
{
    if(*node != NULL)
    {
        if (strcmp(key, (*node)->key) == 0)
        {
            removeRootNode(node);
            size--;
            return true;
        }
        else if(strcmp(key, (*node)->key) < 0)
        {
            return removeNode(&((*node)->left), key);
        }
        else
        {
            return removeNode(&((*node)->right), key);
        }
    }
    else
    {
        return false;
    }
}