int AddItem(const Item * pi, Tree * ptree) { Node * new_node; if(TreeIsFull(ptree)) { fprintf(stderr,"Tree is full.\n"); return FALSE; } if(SeekItem(pi,ptree).child != NULL) { fprintf(stderr,"Attempt to add duplicate item.\n"); return FALSE; } new_node = MakeNode(pi); if(new_node == NULL) { fprintf(stderr,"couldn't create node.\n"); return FALSE; } ptree->size++; if(ptree->root == NULL) ptree->root = new_node; else AddNode(new_node,ptree->root); return TRUE; }
//添加元素,即节点 BOOL AddItem(const Item * pi,Tree * ptree) { Node * new_node;//新节点 if(TreeIsFull(ptree))//判断树是否已满 { fprintf(stderr,"Tree is full.\n"); return FALSE; } if(SeekItem(pi,ptree).child != NULL)//在树中查找目标项目 { fprintf(stderr,"Attempted to add duplicate item\n"); return FALSE; } new_node = MakeNode(pi);//创建新节点,成功返回新节点,否则返回NULL if(new_node == NULL)//创建失败,返回false { fprintf(stderr,"Couldn't create node!\n"); return FALSE; } //节点创建成功,向树中添加节点 ptree->size++;//树的大小加1 if(ptree->root == NULL)//如果树为空 { ptree->root = new_node; } else { AddNode(new_node,ptree->root);//找到新节点应该添加到的位置 } return TRUE; }
void addpet(Tree *pt){ Item temp; if(TreeIsFull(pt)){ puts("No room in the club!"); }else{ puts("Please enter name of pet: "); fgets(temp.petname,MAXN,stdin); puts("Please enter kind of pet: "); fgets(temp.petkind,MAXN,stdin); uppercase(temp.petname); uppercase(temp.petkind); AddItem(&temp,pt); } }
void addpet(Tree * pt){ Item temp; if(TreeIsFull(pt)){ puts("No room in the club"); } else{ puts("Please enter name of pet"); gets(temp.petname); puts("please enter pet kind"); gets(temp.petkind); uppercase(temp.petname); uppercase(temp.petkind); AddItem(&temp,pt); } }
//添加元素,即节点 BOOL AddItem(const Item * pi,Tree * ptree) { Node * new_node;//新节点 Pair look; //初始化查找到的与输入相同的节点look /*look.parent = NULL; look.child = NULL;*/ if(TreeIsFull(ptree))//判断树是否已满 { fprintf(stderr,"Tree is full.\n"); return FALSE; } if((look = SeekItem(pi,ptree)).child != NULL)//在树中查找目标项目 { fprintf(stderr,"Attempted to add duplicate item\n"); //如果树中已经存在相应节点,则将新同名元素添加到已有节点列表的末尾 if(QueueIsFull(look.child->queue))//判断当前节点列表是否已满 { fprintf(stderr,"Current node's queue is full.\n"); return FALSE; } EnQueue(*pi,look.child->queue); } else { new_node = MakeNode(pi);//创建新节点,成功返回新节点,否则返回NULL if(new_node == NULL)//创建失败,返回false { fprintf(stderr,"Couldn't create node!\n"); return FALSE; } //节点创建成功,向树中添加节点 ptree->size++;//树的大小加1 if(ptree->root == NULL)//如果树为空 { ptree->root = new_node; } else { AddNode(new_node,ptree->root);//找到新节点应该添加到的位置 } } return TRUE; }
void addpet(Tree * pt) { Pet * ppet = (Pet *) malloc(sizeof(Pet)); if (ppet == NULL) { fprintf(stderr, "Could not allocate memory.\n"); return; } if (TreeIsFull(pt)) { puts("No room in the club!"); } else { puts("Please enter name of pet:"); get(ppet->name, STRLEN); puts("Please enter pet kind:"); get(ppet->type, STRLEN); uppercase(ppet->name); uppercase(ppet->type); ppet->next = NULL; AddPet(ppet, pt); } }
void addPet(Tree * pt) { Item temp; if (TreeIsFull(pt)) { fputs("No room in the club!\n", stdout); } else { fputs("Please enter name of pet: ", stdout); fgets(temp.petName, STRLEN, stdin); reject_ch(temp.petName, '\n'); fputs("Please enter pet kind: ", stdout); fgets(temp.petKind, STRLEN, stdin); reject_ch(temp.petKind, '\n'); upperCase(temp.petName); upperCase(temp.petKind); AddItem(&temp, pt); } }
bool AddItem(const Item *pi,Tree *ptree){ Node * new_node; if(TreeIsFull(ptree)){ fprintf(stderr,"Tree is Full\n"); return false; //提前返回 } if(SeekItem(pi,ptree).child){ fprintf(stderr,"Attempted to add duplicate item\n"); return false; //提前返回 } new_node = MakeNode(pi); //指向新节点 if(!new_node){ fprintf(stderr,"Couldn't create node\n"); return false; } //成功创建一个节点 ptree->items++; if(!ptree->root){//情况1:树为空 ptree->root = new_node; //新节点即为根节点 }else{ //情况2:树非空 AddNode(new_node,ptree->root); //把新节点添加到树中 } return true; }