亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? grand.c

?? 求圖中的祖先節點(不含父親節點) 內含說明
?? C
字號:
/*本程序通過輸入指定的圖中的節點,然后自動找出該節點的所有祖先節點(不包括父親節點)*/

/*有向歐拉圖的輸入輸出算法程序實現*/
#include<stdio.h>

int node;


int q[20][20];  /*本程序最多處理含20個結點的有向圖*/

char ch[50];   /*字符數組暫存從文件讀入的數據*/
long int pos;   /*記錄文件位置*/
static int point_number=0;  /*圖的結點數*/
static int n=0;   /*表示結點數,將由point_number賦值*/

input_file()
{
   FILE *fp=NULL;

   int i=0,j=0;  /*用于計數的變量,計數均從0開始*/
   int line=0,row=0;
   int n=0;   /*表示結點數,將由point_number賦值*/
   int js1=0,js2=0;

   char s1[50];

   fp=fopen("g:\\yxolt_io\\shuru.txt","r");

     if(fp==NULL)
       {
     printf("can not open file\n");
     getch();
            exit(1);
        }

   /*從文件中讀入圖的結點數*/
   while(point_number==0)
    {
       fscanf(fp,"%c",&ch[i]);

       if(ch[i]==':')
         {
         while(j<i)  /*將 : 之前(即是i之前)的字符讀入字符串s1[]*/
              {
        s1[j]=ch[j];
        j++;
               }

          s1[j]='\0';  /*使字符數組成為字符串*/

          if(strcmp(s1,"points")==0)  /*如果':'之前的字符串是points則讀取:后的數字*/
                 {
            fscanf(fp,"%d",&point_number); /*將':'后的結點數放入point_number*/
                    /*記下當前文件的位置,并退出當前循環*/
                      if((pos=ftell(fp))==-1L)   /*pos記下當前文件位置*/
                          {
                 printf("A file error has occurred!");
                 getch();
                             exit(1);
                            }

                        else
                          {
                           i=0;
                           fclose(fp);
                           break;
                           }
                   }
           }
       i++; /*指向下一個ch[]數組單元*/
     }

  /*由point_number提供的有向圖結點數生成相關數組*/

    n=point_number;

     for(js1=0;js1<=n;js1++)
       for(js2=0;js2<=n;js2++)
        {
           q[js1][js2]=0;
          }   /*初始化相關矩陣*/

 /*從文件上次位置(讀完結點數目)開始讀入文件中的數據*/

    fp=fopen("g:\\yxolt_io\\shuru.txt","r"); /*第二次打開文件*/

     if(fp==NULL)
       {
     printf("can not open file\n");
     getch();
            exit(1);
        }

     fseek(fp,pos,SEEK_SET);  /*將指針指向上次文件中斷的地方*/
     /*經單步調試證明上句已成功執行,將文件指針指向從文件開頭后pos個字節后的位置,
      即是points:6后的位置,此技術在本程序中并無實際意義,但此舉進一步完善了我的文件
      讀寫技術,以供今后使用.*/

     i=0;  /*ch[]從頭開始存放讀入的數據*/

     while(!feof(fp))
        {
           fscanf(fp,"%c",&ch[i]);

           if(ch[i]=='>'&&ch[i-1]=='-')
              {
          row=ch[i-2]-48;  /*行值*/
                 
        /*2004.7.6對本程序維護,使其真正能夠處理20個頂點的有向圖,原先實際只能處理編號<10的有向圖*/

                  if(ch[i-3]>='0'&&ch[i-3]<='9') /*針對頂點編號是兩位數的情況(10.11,12...)
                                                 由于本程序處理上限是20個頂點,故此不考慮頂點
                                                 編號是三位或三位以上的情況。*/
                    { 
                       row=(ch[i-3]-48)*10+row; /*處理頂點編號是兩位數的情況*/
                     }
        /*2004.7.6對本程序維護*/

                  i++; /*指向下一個ch[]存儲單元*/
                  i=check_i(i); /*一旦i>=50就進行隊列管理*/

                 fscanf(fp,"%c",&ch[i]);/*將->后的列值從文件讀入*/
                 line=ch[i]-48;   /*列值*/


       /*2004.7.6對本程序維護,使其真正能夠處理20個頂點的有向圖,原先實際只能處理編號<10的有向圖*/
               i++;
               i=check_i(i); /*一旦i>=50就進行隊列管理*/
               fscanf(fp,"%c",&ch[i]);/*試探性的再讀入一個字符,若該字符是數字,則說明列值是兩位數*/

                if(ch[i]>='0'&&ch[i]<='9')/*計算兩位數的頂點編號*/
                  {
                     line=line*10+(ch[i]-48);
                     }
      /*2004.7.6對本程序維護*/

                     do{
                          i++; /*指向下一個ch[]存儲單元*/
                          i=check_i(i); /*一旦i>=50就進行隊列管理*/

                          fscanf(fp,"%c",&ch[i]); /*讀入兩點間有向邊條數*/
                            if(ch[i]>='0'&&ch[i]<='9')  
                               {
                                    q[row][line]=ch[i]-48;
                                 }

            } while((ch[i]!='\n')&&(!feof(fp)));  /*以讀到該行的結尾為結束,并再讀下一行*/
        }

              i++;   /*指向下一個ch[]存儲單元*/
              i=check_i(i); /*一旦i>=50就進行隊列管理*/

      }

  fclose(fp);
}


check_i(int i)
{
  if(i>=50)    /*一旦i>=50就進行隊列管理*/
    {
      queue_manage();
      i--;
     }

  return i;
}

queue_manage()/*將最早入隊的數據出隊,i減一。50個字符空間相當于存儲有關
                信息的緩沖區,以備后用*/
{
   int j=0;

   for(j=0;j<49;j++)
      ch[j]=ch[j+1];
}

father(int fnode,int G[],int jg)
{
  int i=0;
  int F[21]; /*用來存放fnode 的父親節點,也就是node的祖先節點,應該存入G[]數組中*/
  int jf=0; /*紀錄fnode節點的父親節點的個數*/

  for(i=0;i<=20;i++)
     {
       F[i]=0;
      }

  F[jf]=0; /*F[0]用來記錄父親節點的個數*/
 for(i=1;i<=point_number;i++)
  {
    if(q[i][fnode]==1)
      {
        F[++jf]=i; /*記下一個fnode 的父親節點*/
        G[++jg]=i; /*同時作為node的祖先節點存入G[]*/
        }
    }/*此for循環找出fnode的所有父親節點,并將這些節點作為NODE的祖先節點存入G[]*/

  F[0]=jf; /*F[0]用來記錄父親節點的個數*/
  G[0]=jg;/*G[0]用來記錄node祖先節點的個數*/

 /*通過遞歸找出node節點祖先的祖先,并存入G[]*/
  if(F[0]!=0)
   {
      while(jf!=0)
        {
          if(F[jf]!=0)
            jg=father(F[jf],G,jg);

          jf--;
         }
    }

  return jg;
}


grand() /*找出M[]中的node的祖先節點,并將其從M[]中移出*/
{
  int G[21];/*用來存放node 的祖先節點,用于與M[]數組比較*/
  int jg=0; /*紀錄祖先節點的個數*/
  int i=0;
  int F[21]; /*用來存放node 的父親節點*/
  int jf=0; /*紀錄父親節點的個數*/

  for(i=0;i<=20;i++)
     {
       G[i]=0;
       F[i]=0;

      }

  F[jf]=0; /*F[0]用來記錄父親節點的個數*/
  for(i=1;i<=point_number;i++)
     {
       if(q[i][node]==1)
           {
             F[++jf]=i; /*記下一個node 的父親節點*/
             }
       }/*此for循環找出node的所有父親節點*/
  F[0]=jf; /*F[0]用來記錄父親節點的個數*/

  while(jf!=0)
  {
    if(F[jf]!=0)
     jg=father(F[jf],G,jg);/*通過father()函數以及node node 的父親節點找出node所有祖先節點*/

     jf--;
    }

  /*輸出G[]的內容*/
 if(jg==0)
   {
    printf("\n The node didn't have grand! \n ");
     }

  else
    {
      /*由于可能出現node節點的祖先節點重復出現在G[]中,故此對G[]做一個處理,
       將G[]中重復的節點只保留一個*/
       tidyG(G,jg);

     printf("\n %d's grands are:",node);

      jg=G[0];
      while(jg!=0)
     {
       printf("%4d",G[jg]);
       jg--;
       }

     }/*end else*/

  /*將G[]中出現的node的祖先節點,從M[]中移出*/
 }

tidyG(int G[],int jg)
{
  int temp[21];
  int jt=0;
  int cut=0;
  int i=0,j=0;

  for(i=0;i<=20;i++)
     {
        temp[i]=0;
      }


  jg=G[0];
     while(jg!=0) /*將G[]中的節點加入temp[],節點不能重復出現在temp[]中*/
       {
         j=jt;
         cut=0;

         if(j>0) /*temp[]不空*/
           {
             while(j!=0)
               {
                 if(temp[j]==G[jg]) /*檢查G[jp]是否與已經進入temp[]的節點重復
                                       若重復,則G[jp]不加入temp[]*/
                    {
                       cut=1;break;
                       }

                  j--;
                 }
             }

         if(cut==0)
           {
              temp[++jt]=G[jg];
             }

         jg--;
       } /*end while*/

     temp[0]=jt;

     for(i=0;i<=temp[0];i++)  /*得到經過整理的G[],其中沒有重復的元素*/
       {
           G[i]=temp[i];
         }
}


main()
{
  clrscr();
  input_file();/*讀入有向圖,建立q[][]鄰接矩陣*/

  printf("\nPlease input the node witch you want to find it's grands(but not include father): ");
  scanf("%d",&node);
  grand();

  getch();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美伊人精品成人久久综合97| 国产精品国产三级国产普通话99 | 首页国产欧美久久| 国产精品12区| 欧美视频一区二区三区| 久久先锋资源网| 亚洲成人av中文| 成人精品视频.| 欧美一区二区啪啪| 一区二区三区精品在线| 丁香六月综合激情| 欧美成人一区二区三区在线观看| 日韩毛片精品高清免费| 国产综合成人久久大片91| 欧美日韩国产综合一区二区| 亚洲日本免费电影| 国产精品1区2区| 日韩欧美久久一区| 五月天中文字幕一区二区| eeuss鲁一区二区三区| 国产亚洲精久久久久久| 日韩av成人高清| 在线不卡中文字幕播放| 性做久久久久久免费观看| 在线日韩一区二区| 亚洲免费在线播放| 成人ar影院免费观看视频| 久久精品视频一区| 国产一区二区精品久久91| 精品欧美乱码久久久久久1区2区| 免费观看成人av| 91精品国产一区二区三区| 免费成人性网站| 欧美大片在线观看| 免费成人深夜小野草| 欧美一级免费大片| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲国产精品精华液网站| 色综合久久久久网| 一区二区三区蜜桃网| 欧美中文字幕一区二区三区亚洲| 亚洲免费在线视频| 精品视频色一区| 亚洲成人一区二区在线观看| 欧美伦理影视网| 日韩精品1区2区3区| 日韩免费高清电影| 国产精品996| 中文字幕亚洲精品在线观看| 色嗨嗨av一区二区三区| 亚洲黄一区二区三区| 欧美色图12p| 蜜桃视频一区二区| 久久精品无码一区二区三区| 97成人超碰视| 天堂va蜜桃一区二区三区| 精品成人私密视频| av午夜精品一区二区三区| 亚洲久本草在线中文字幕| 91精品综合久久久久久| 国产一区二区不卡在线| 亚洲日本中文字幕区| 欧美卡1卡2卡| 粉嫩在线一区二区三区视频| 黄一区二区三区| 欧美卡1卡2卡| 国产综合色视频| 亚洲人快播电影网| 欧美剧情片在线观看| 国产一区二区免费在线| 玉米视频成人免费看| 欧美zozo另类异族| 91视视频在线直接观看在线看网页在线看| 亚洲综合丝袜美腿| 久久久99精品免费观看| 欧美在线观看视频一区二区| 经典三级在线一区| 洋洋成人永久网站入口| 久久久久久久久久美女| 日本精品一区二区三区四区的功能| 免费观看成人av| 亚洲最大色网站| 国产亚洲一二三区| 欧美三级韩国三级日本三斤| 成人看片黄a免费看在线| 国产曰批免费观看久久久| 欧美大白屁股肥臀xxxxxx| av在线不卡免费看| 国产在线精品免费av| 亚洲va欧美va人人爽午夜| 国产精品视频观看| 日韩欧美久久久| 欧美日韩国产综合草草| 一本一本大道香蕉久在线精品| 精品夜夜嗨av一区二区三区| 亚洲bdsm女犯bdsm网站| 亚洲精品v日韩精品| 亚洲国产精品黑人久久久| 日韩美女视频在线| 91麻豆精品久久久久蜜臀| 色一区在线观看| 成人激情文学综合网| 国产真实乱子伦精品视频| 美女国产一区二区三区| 婷婷六月综合亚洲| 亚洲电影欧美电影有声小说| 一个色妞综合视频在线观看| 亚洲欧美在线aaa| 国产精品麻豆视频| 国产精品久久久久一区二区三区 | 亚洲美女屁股眼交3| 久久综合狠狠综合久久激情| 91精品国产欧美一区二区 | 不卡的av中国片| 成人激情文学综合网| 风间由美性色一区二区三区| 国产成人日日夜夜| 国产成人精品午夜视频免费| 国产精品一卡二| 国产成人精品免费在线| 成人国产精品免费观看| 成人av在线资源网站| 91免费版在线| 在线观看视频一区二区| 欧美日韩一区二区三区四区| 欧美日韩综合一区| 欧美一区二区久久| 欧美成人video| 欧美国产日本韩| 一区二区三区中文字幕精品精品 | 91麻豆精东视频| 欧美亚洲一区二区三区四区| 欧美久久久久免费| 精品电影一区二区| 国产精品国产三级国产普通话三级 | 成人免费毛片app| 99re在线精品| 欧美精品欧美精品系列| 欧美成人精品高清在线播放| 欧美激情在线看| 亚洲日本乱码在线观看| 亚洲柠檬福利资源导航| 三级欧美在线一区| 国产99久久精品| 色狠狠一区二区| 精品久久久久久综合日本欧美| 欧美极品aⅴ影院| 亚洲一区在线观看视频| 美女免费视频一区| 成人午夜碰碰视频| 欧美日韩午夜在线| 久久久99精品免费观看不卡| 亚洲一区在线观看免费| 国模冰冰炮一区二区| 色婷婷av一区二区三区之一色屋| 欧美一级视频精品观看| 亚洲欧洲三级电影| 男男成人高潮片免费网站| 成人一级黄色片| 欧美久久一二三四区| 最好看的中文字幕久久| 精品午夜一区二区三区在线观看| 91小视频在线免费看| 精品蜜桃在线看| 亚洲一区在线观看免费 | 久久综合九色综合久久久精品综合 | 国产精品污网站| 免费高清在线视频一区·| 色一情一乱一乱一91av| 久久久精品国产免大香伊| 日韩激情中文字幕| 色婷婷久久久亚洲一区二区三区| 精品欧美一区二区在线观看| 亚洲国产aⅴ天堂久久| eeuss鲁一区二区三区| 久久这里只精品最新地址| 丝袜美腿亚洲综合| 日本精品一区二区三区高清| 国产精品丝袜91| 国产激情偷乱视频一区二区三区 | 蜜桃91丨九色丨蝌蚪91桃色| 色老综合老女人久久久| 国产精品美女久久福利网站| 国产一区二区三区四区在线观看 | 日本不卡在线视频| 欧美性猛片xxxx免费看久爱| 亚洲欧美色图小说| 99久久99久久久精品齐齐| 久久精品一区八戒影视| 国产在线精品免费| 欧美sm极限捆绑bd| 欧美美女网站色| 欧美日韩一本到| 久久久久高清精品| 麻豆视频观看网址久久| 欧美人妖巨大在线| 五月婷婷综合激情| 3d成人动漫网站| 五月天一区二区| 欧美一区二区视频在线观看2020|