Êý¾Ý½á¹¹´ó×÷ÒµÖ®¼ÒÆ×¹ÜÀíϵͳ ÏÂÔØ±¾ÎÄ

Member *p = (*i)->pson; while (p->pbro!=nullptr) p = p->pbro; p->pbro = temp; } next.push_back(temp); temp = nullptr; break; } } //Èô³ÉÔ±µÄ¸¸Çײ»ÊÇÕâÒ»´úµÄ³ÉÔ±£¬Ôò½«next¸³Óègenely,µü½øÏÂÒ»´ú if (temp != nullptr){ genely = next;//µü½øÏÂÒ»´ú next.clear();//Çå¿Õnext for (auto i : genely){//½«³ÉÔ±·ÅÈë¼Ò×åÊ÷ÖÐ if (i->name == temp->father){ i->pson = temp; next.push_back(temp); temp = nullptr; break; } } } //¶¯Ì¬´´½¨ÁÙʱ³ÉÔ±±äÁ¿,ÓÃÓÚ´æ´¢ÊäÈëµÄÏÂÒ»¸ö³ÉÔ±µÄÐÅÏ¢

temp = new Member; } infile.close();//¹Ø±Õ´æ´¢³ÉÔ±ÐÅÏ¢µÄÎļþ //ÈôÎļþÖÐûÓгÉÔ±ÐÅÏ¢£¬½«rootÖÃΪ¿Õ if (root->name == \δ֪\) root = nullptr; //´ò¿ª´æ´¢¼ÒÍ¥×ÜÌåÐÅÏ¢µÄÎļþ£¬¶ÁÈëÐÅÏ¢ infile.open(\, ios::in | ios::_Nocreate); if (!infile){ return false; } infile >> total >> aveAge >> aveHeight >> aveMember >> ratio; infile.close();//¹Ø±ÕÎļþ return true; } Member *FamilySystem::seek(string nam){ //Èô¼ÒÆ×Ê÷Ϊ¿Õ£¬·µ»Ø¿ÕÖ¸Õë if (root == nullptr) return nullptr; //Èôroot²»Îª¿Õ£¬¼ÌÐø²éÕÒ Member *store = nullptr;//´æ´¢·µ»ØµÄÖ¸Õë vector genely;//´æ´¢ÕâÒ»´úµÄÖ¸Õë genely.push_back(root); vector next;//´æ´¢ÏÂÒ»´úµÄÖ¸Õë for (;;){//Ñ­»·²éÕÒ //ÔÚÕâÒ»´úÖвéÕÒ£¬ÈôÕÒµ½£¬Ìøµ½×îºó for (auto p : genely){ if (p->name == nam){ store = p; goto End; } } //ÅжÏÏÂÒ»´úÊÇ·ñΪ¿Õ£¬ÈôΪ¿Õ£¬Ìøµ½×îºó int jubge = 0; for (auto p : genely){ if (p->pson != nullptr) ++jubge; } if (jubge == 0) goto End; //ÕÒµ½ÏÂÒ»´ú for (auto p : genely){ Member *temp = p->pson; if (temp==nullptr) continue; else{ next.push_back(temp); while (temp->pbro != nullptr){ next.push_back(temp->pbro); temp = temp->pbro; } } } genely = next; next.clear(); } End:return store; } bool FamilySystem::addMem(){ cout << \Ìí¼Ó³ÉÔ±.\\n\; Member *temp=new Member; try{ temp->setE();//ÊäÈë³ÉÔ±ÐÅÏ¢ } catch (int){ return false; } //¼ì²éÆä¸¸Ç×ÊÇ·ñ´æÔÚ Member *jubge = seek(temp->father); if (root == nullptr) root = temp; else if (jubge == nullptr){ cout << \¼ÒÆ×ÖÐûÓдËÈ˸¸Ç×µÄÐÅÏ¢£¡ÎÞ·¨²åÈ룡\; cout << \ÇëÈ·ÈÏ´ËÈËÊÇ·ñ´Ë¼Ò×åÖеÄÈË£¡\;