¼Ò×å¹ØÏµ²éѯϵͳ
¼Óµ½ËùÓк¢×ÓÖ®ºó*/ } else /* ûÓк¢×ÓÔòÖ±½ÓÌí¼Ó*/ tpar->lchild=temp; fp=fopen(fname,\); /* ÒÔдÈ뷽ʽ´ò¿ªÎļþ*/ if(fp) { while(strcmp(par,family[i])!=0&&family[i][0]!='#') { if(family[i][0]!='@') /* ²éÕÒË«Ç×ÔÚÊý×éÖÐλÖÃ*/ parpos++; /* parpos¼ÆÊý*/ i++; /* familyÊý×éÐÐϱêºóÒÆ*/ } i=0; /* familyÊý×éÐÐϱê¹é*/ while(family[i][0]!='#') { if(family[i][0]=='@') /* ²éÕÒ¡°@¡±µÄ¸öÊý£¬µÚÒ»¸ö²»¼Æ*/ count++; /* countÀÛ¼Ó¸öÊý*/ if(count==parpos) /* ˵Ã÷´Ë¡°@¡±ÓëÆäǰһ¸ö¡°@¡±Ö®Ç°ÎªparµÄº¢×Ó*/ curpos=i; /* curpos¼Æµ±Ç°Î»ÖÃ*/ i++; /* familyÊý×éÐÐϱêºóÒÆ*/ } if(count 13 ¼Ò×å¹ØÏµ²éѯϵͳ { for(j=i;j>=curpos;j--) /* µ±Ç°Î»Öõ½Êý×é×îºóµÄÈ«²¿ÐÅÏ¢ºóÒÆÒ»ÐÐ*/ strcpy(family[j+1],family[j]); strcpy(family[curpos],chi); /* ½«Ð½áµã´æ´¢µ½¡°@¡±µÄǰһÐÐ*/ } if(end==1) /* ÈôendΪ£¬ÔòÊý×éĩβϱêºóÒÆnumλ*/ i=i+num; for(j=0;j<=i+1;j++) /* ½«Êý×éËùÓÐÐÅϢдÈëÎļþ*/ { fputs(family[j],fp); fputc('\\n',fp); /* Ò»¸öÐÅÏ¢´æÒ»ÐÐ*/ } fclose(fp); /* ¹Ø±ÕÎļþ*/ printf(\Ìí¼ÓгÉÔ±³É¹¦£¡\\n\); } else printf(\Ìí¼ÓгÉԱʧ°Ü£¡\\n\); } } 2.6 ¼Ò×å³ÉÔ±¹ØÏµµÄÏà¹Ø²éѯ 2.6.1 ²éÕÒÒ»¸ö¼Ò×åµÄ±Ç׿ ÅжÏÊäÈëµÄÐÕÃûÊÇ·ñÔڸüÒ×åÖдæÔÚ£¬Èç¹û´æÔÚ£¬Ôò·µ»Ø¸Ã¼Ò×åµÄ¸ù½ÚµãÐÅÏ¢¡£ /* ²éÕÒÒ»¸ö¼Ò×åµÄ׿ÏÈ*/ void Ancesstor(TriTree *t) /* ·µ»ØÊ÷µÄ¸ù½áµãÐÅÏ¢*/ { printf(\¸Ã¼Ò×åµÄ׿ÏÈΪ%s\\n\,t->data); } 14 ¼Ò×å¹ØÏµ²éѯϵͳ 2.6.2 ²éÕÒÒ»¸ö³ÉÔ±µÄËùÓÐ׿ÏÈ·¾¶ ²éÕÒÒ»¸ö³ÉÔ±µÄËùÓÐ׿ÏÈ·¾¶£¬ÐèÒª´ÓËüµÄË«Ç×Ò»Ö±ÏòÉϲéÕÒµ½¸ù½áµã¡£ »ù±¾Ë¼Ï룺¶ÔÓë½áµãt£¬ÏÈÅжÏËüÊÇ·ñÊǸù½áµã£¨¸ù½ÚµãµÄË«Ç×ÊÇNULL£©£¬Èç¹ûÊǸù½áµã£¬Ö±½ÓÊä³öËü±¾Éí£»Èç¹û²»ÊÇ£¬²éÕÒËüµÄË«Ç×Ö¸ÕëÖ¸ÏòµÄ½áµã£¬½«Ë«Ç×ÐÅÏ¢Êä³ö¡£¼ÌÐø²éÕÒ£¬Ö±µ½ÕÒµ½¸ù½áµã¡£ /* ²éÕÒÒ»¸ö³ÉÔ±µÄËùÓÐ׿ÏÈ*/ void AncesstorPath(TriTree *t) { if(t->parent==NULL) /* Èô¸Ã³ÉÔ±Îª×æÏÈ£¬ÔòÖ±½ÓÊä³ö*/ printf(\ÎÞ׿ÏÈ£¡\\n\,t->data); else /* ·ñÔò¼ÌÐø²éÕÒ׿ÏÈ*/ { printf(\ËùÓÐ׿ÏÈ·¾¶£º%s\,t->data,t->data); while(t->parent!=NULL)/* Èôµ±Ç°³ÉÔ±µÄË«Çײ»ÊÇ׿ÏÈ£¬Ôò¼ÌÐø²éÕÒ*/ { printf(\,t->parent->data); /* ·ÃÎʵ±Ç°³ÉÔ±µÄË«Ç×*/ t=t->parent; /* ¼ÌÐøÑ»·²éÕÒ*/ } printf(\); } } 2.6.3 ²éÕÒÒ»¸ö³ÉÔ±µÄË«Ç× »ù±¾Ë¼Ï룺ÏÈÅжϽáµãtÊÇ·ñÊǸù½áµã£¬¹ý²»ÊǸù½áµã£¬ Ö±½ÓÊä³ö¸Ã½áµãË«Ç×Ö¸ÕëµÄ½áµãÐÅÏ¢£»ÈôÊǸù½áµã£¬Êä³öÌáʾÐÅÏ¢£¬½áµãÎÞË«Çס£ 15 ¼Ò×å¹ØÏµ²éѯϵͳ /* ²éÕÒÒ»¸ö³ÉÔ±µÄË«Ç×*/ void Parent(TriTree *t) { if(t->parent!=NULL) /* Èô¸Ã³ÉÔ±Îª×æÏÈ£¬ÔòÎÞË«Ç×*/ printf(\µÄË«Ç×Ϊ%s\\n\,t->data,t->parent->data); else printf(\ÎÞË«Ç×£¡\\n\,t->data); } 2.6.4 È·¶¨Ò»¸ö³ÉÔ±Êǵڼ¸´ú È·¶¨Ò»¸ö³ÉÔ±Êǵڼ¸´ú£¬Ö»ÒªÖªµÀ´ÓËü±¾Éíµ½¸ù½áµã°üÀ¨µÄ׿ÏȸöÊý¾Í¿É¡£Òò¶ø¶ÔÓÚ¸ú½áµãt£¬´ÓËü±¾Éí¿ªÊ¼Ò»Ö±ÏòÉϲéÕÒµ½¸ù½áµã£¬²éÕҵĹý³ÌÖÐÓñäÁ¿count£¨³õֵΪ1£©¼ÆÊý£¬×îºóÊä³ö count¡£ /* È·¶¨Ò»¸ö³ÉÔ±Êǵڼ¸´ú*/ void Generation(TriTree *t) { int count=1; /* ¼ÆÊý*/ DataType str[MAXNUM]; strcpy(str,t->data); /* ´æ´¢µ±Ç°ÐÅÏ¢*/ while(t->parent!=NULL)/* ²éÕÒÆäË«Ç×*/ { count++; /* ÀÛ¼Ó¼ÆÊý*/ t=t->parent; } printf(\ÊǵÚ%d ´ú£¡\\n\,str,count); } 2.6.5 ²éÕÒÒ»¸ö³ÉÔ±µÄÐÖµÜ Ò»¸ö³ÉÔ±µÄΪÆäË«Ç׳ýÁ˸óÉÔ±ÒÔÍâµÄËùÓк¢×Ó¡£ »ù±¾Ë¼Ï룺¶ÔÓÚ½áµãt£¬ÏÈÅжÏËüÊÇ·ñÊǸú½áµã£¬ÈôÊǸù½áµã£¬ÔòÎÞÐֵܣ»Èô²»ÊǸù½áµã£¬ÔòÕÒµ½½áµãtµÄË«Çס£½Ó×ÅÅжÏË«Ç×µÄ×óº¢×ÓºÍ×óº¢×ÓµÄÐÖµÜÊÇ·ñ¶¼´æÔÚ£¨ÈôÖ»ÓÐ×óº¢×Ó£¬×óº¢×Ó¾ÍÊÇÒª²éÕÒµÄÕâ¸ö³ÉÔ±£©£¬Èç¹û¶¼²»´æÔÚ£¬ÔòÎÞÐֵܣ»Èç¹û 16