/* graft.c * last revised at 1, Feb. 1994 * * Copyright (C) 1994, All rights reserved. * written by Gyudong Kim(chilly@eleceng.adelaide.edu.au) * */ #include "findhier.h" int find_parent(parent,name) struct branch *parent; char *name; { struct branch *tmpb; if (parent->name == name) return(1); if (parent->offspring == NULL) return(0); push(parent->name); for(tmpb=parent->offspring;tmpb!=NULL;tmpb=tmpb->next) { if (check(tmpb->name)) continue; if (!find_parent(tmpb,name)) continue; pop(); return(1); } pop(); return(0); } void graft(parent,tmptop) struct branch *parent,*tmptop; { struct branch *tmpb; if (parent==NULL) return; if (parent->name == tmptop->name) { if (parent->offspring != NULL) return; /* already done */ parent->offspring = tmptop->offspring; return; } if (parent->offspring == NULL) return; push(parent->name); for(tmpb=parent->offspring;tmpb!=NULL;tmpb=tmpb->next) { if (check(tmpb->name)) continue; graft(tmpb,tmptop); } pop(); } /* graft.c */