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

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

?? bo7-1.cpp

?? 數(shù)據(jù)結構(嚴慰民)配套純C代碼,準確理解源代碼的真諦
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
 // bo7-1.cpp 圖的數(shù)組(鄰接矩陣)存儲(存儲結構由c7-1.h定義)的基本操作(20個)
 int LocateVex(MGraph G,VertexType u)
 { // 初始條件:圖G存在,u和G中頂點有相同特征
   // 操作結果:若G中存在頂點u,則返回該頂點在圖中位置;否則返回-1
   int i;
   for(i=0;i<G.vexnum;++i)
     if(strcmp(u,G.vexs[i])==0)
       return i;
   return -1;
 }

 Status CreateFAG(MGraph &G)
 { // 采用數(shù)組(鄰接矩陣)表示法,由文件構造沒有相關信息的無向圖G
   int i,j,k;
   char filename[13];
   VertexType va,vb;
   FILE *graphlist;
   printf("請輸入數(shù)據(jù)文件名(f7-1.dat):");
   scanf("%s",filename);
   graphlist=fopen(filename,"r");
   fscanf(graphlist,"%d",&G.vexnum);
   fscanf(graphlist,"%d",&G.arcnum);
   for(i=0;i<G.vexnum;++i) // 構造頂點向量
     fscanf(graphlist,"%s",G.vexs[i]);
   for(i=0;i<G.vexnum;++i) // 初始化鄰接矩陣
     for(j=0;j<G.vexnum;++j)
     {
       G.arcs[i][j].adj=0; // 圖
       G.arcs[i][j].info=NULL; // 沒有相關信息
     }
   for(k=0;k<G.arcnum;++k)
   {
     fscanf(graphlist,"%s%s",va,vb);
     i=LocateVex(G,va);
     j=LocateVex(G,vb);
     G.arcs[i][j].adj=G.arcs[j][i].adj=1; // 無向圖
   }
   fclose(graphlist);
   G.kind=AG;
   return OK;
 }

 Status CreateDG(MGraph &G)
 { // 采用數(shù)組(鄰接矩陣)表示法,構造有向圖G
   int i,j,k,l,IncInfo;
   char s[MAX_INFO],*info;
   VertexType va,vb;
   printf("請輸入有向圖G的頂點數(shù),弧數(shù),弧是否含其它信息(是:1,否:0): ");
   scanf("%d,%d,%d",&G.vexnum,&G.arcnum,&IncInfo);
   printf("請輸入%d個頂點的值(<%d個字符):\n",G.vexnum,MAX_NAME);
   for(i=0;i<G.vexnum;++i) // 構造頂點向量
     scanf("%s",G.vexs[i]);
   for(i=0;i<G.vexnum;++i) // 初始化鄰接矩陣
     for(j=0;j<G.vexnum;++j)
     {
       G.arcs[i][j].adj=0; // 圖
       G.arcs[i][j].info=NULL;
     }
   printf("請輸入%d條弧的弧尾 弧頭(以空格作為間隔): \n",G.arcnum);
   for(k=0;k<G.arcnum;++k)
   {
     scanf("%s%s%*c",va,vb);  // %*c吃掉回車符
     i=LocateVex(G,va);
     j=LocateVex(G,vb);
     G.arcs[i][j].adj=1; // 有向圖
     if(IncInfo)
     {
       printf("請輸入該弧的相關信息(<%d個字符): ",MAX_INFO);
       gets(s);
       l=strlen(s);
       if(l)
       {
         info=(char*)malloc((l+1)*sizeof(char));
         strcpy(info,s);
         G.arcs[i][j].info=info; // 有向
       }
     }
   }
   G.kind=DG;
   return OK;
 }

 Status CreateDN(MGraph &G)
 { // 采用數(shù)組(鄰接矩陣)表示法,構造有向網(wǎng)G
   int i,j,k,w,IncInfo;
   char s[MAX_INFO],*info;
   VertexType va,vb;
   printf("請輸入有向網(wǎng)G的頂點數(shù),弧數(shù),弧是否含其它信息(是:1,否:0): ");
   scanf("%d,%d,%d",&G.vexnum,&G.arcnum,&IncInfo);
   printf("請輸入%d個頂點的值(<%d個字符):\n",G.vexnum,MAX_NAME);
   for(i=0;i<G.vexnum;++i) // 構造頂點向量
     scanf("%s",G.vexs[i]);
   for(i=0;i<G.vexnum;++i) // 初始化鄰接矩陣
     for(j=0;j<G.vexnum;++j)
     {
       G.arcs[i][j].adj=INFINITY; // 網(wǎng)
       G.arcs[i][j].info=NULL;
     }
   printf("請輸入%d條弧的弧尾 弧頭 權值(以空格作為間隔): \n",G.arcnum);
   for(k=0;k<G.arcnum;++k)
   {
     scanf("%s%s%d%*c",va,vb,&w);  // %*c吃掉回車符
     i=LocateVex(G,va);
     j=LocateVex(G,vb);
     G.arcs[i][j].adj=w; // 有向網(wǎng)
     if(IncInfo)
     {
       printf("請輸入該弧的相關信息(<%d個字符): ",MAX_INFO);
       gets(s);
       w=strlen(s);
       if(w)
       {
         info=(char*)malloc((w+1)*sizeof(char));
         strcpy(info,s);
         G.arcs[i][j].info=info; // 有向
       }
     }
   }
   G.kind=DN;
   return OK;
 }

 Status CreateAG(MGraph &G)
 { // 采用數(shù)組(鄰接矩陣)表示法,構造無向圖G
   int i,j,k,l,IncInfo;
   char s[MAX_INFO],*info;
   VertexType va,vb;
   printf("請輸入無向圖G的頂點數(shù),邊數(shù),邊是否含其它信息(是:1,否:0): ");
   scanf("%d,%d,%d",&G.vexnum,&G.arcnum,&IncInfo);
   printf("請輸入%d個頂點的值(<%d個字符):\n",G.vexnum,MAX_NAME);
   for(i=0;i<G.vexnum;++i) // 構造頂點向量
     scanf("%s",G.vexs[i]);
   for(i=0;i<G.vexnum;++i) // 初始化鄰接矩陣
     for(j=0;j<G.vexnum;++j)
     {
       G.arcs[i][j].adj=0; // 圖
       G.arcs[i][j].info=NULL;
     }
   printf("請輸入%d條邊的頂點1 頂點2(以空格作為間隔): \n",G.arcnum);
   for(k=0;k<G.arcnum;++k)
   {
     scanf("%s%s%*c",va,vb); // %*c吃掉回車符
     i=LocateVex(G,va);
     j=LocateVex(G,vb);
     G.arcs[i][j].adj=G.arcs[j][i].adj=1; // 無向圖
     if(IncInfo)
     {
       printf("請輸入該邊的相關信息(<%d個字符): ",MAX_INFO);
       gets(s);
       l=strlen(s);
       if(l)
       {
         info=(char*)malloc((l+1)*sizeof(char));
         strcpy(info,s);
         G.arcs[i][j].info=G.arcs[j][i].info=info; // 無向
       }
     }
   }
   G.kind=AG;
   return OK;
 }

 Status CreateAN(MGraph &G)
 { // 采用數(shù)組(鄰接矩陣)表示法,構造無向網(wǎng)G。算法7.2
   int i,j,k,w,IncInfo;
   char s[MAX_INFO],*info;
   VertexType va,vb;
   printf("請輸入無向網(wǎng)G的頂點數(shù),邊數(shù),邊是否含其它信息(是:1,否:0): ");
   scanf("%d,%d,%d",&G.vexnum,&G.arcnum,&IncInfo);
   printf("請輸入%d個頂點的值(<%d個字符):\n",G.vexnum,MAX_NAME);
   for(i=0;i<G.vexnum;++i) // 構造頂點向量
     scanf("%s",G.vexs[i]);
   for(i=0;i<G.vexnum;++i) // 初始化鄰接矩陣
     for(j=0;j<G.vexnum;++j)
     {
       G.arcs[i][j].adj=INFINITY; // 網(wǎng)
       G.arcs[i][j].info=NULL;
     }
   printf("請輸入%d條邊的頂點1 頂點2 權值(以空格作為間隔): \n",G.arcnum);
   for(k=0;k<G.arcnum;++k)
   {
     scanf("%s%s%d%*c",va,vb,&w); // %*c吃掉回車符
     i=LocateVex(G,va);
     j=LocateVex(G,vb);
     G.arcs[i][j].adj=G.arcs[j][i].adj=w; // 無向
     if(IncInfo)
     {
       printf("請輸入該邊的相關信息(<%d個字符): ",MAX_INFO);
       gets(s);
       w=strlen(s);
       if(w)
       {
         info=(char*)malloc((w+1)*sizeof(char));
         strcpy(info,s);
         G.arcs[i][j].info=G.arcs[j][i].info=info; // 無向
       }
     }
   }
   G.kind=AN;
   return OK;
 }

 Status CreateGraph(MGraph &G)
 { // 采用數(shù)組(鄰接矩陣)表示法,構造圖G。算法7.1
   printf("請輸入圖G的類型(有向圖:0,有向網(wǎng):1,無向圖:2,無向網(wǎng):3): ");
   scanf("%d",&G.kind);
   switch(G.kind)
   {
     case DG: return CreateDG(G); // 構造有向圖
     case DN: return CreateDN(G); // 構造有向網(wǎng)
     case AG: return CreateAG(G); // 構造無向圖
     case AN: return CreateAN(G); // 構造無向網(wǎng)
     default: return ERROR;
   }
 }

 void DestroyGraph(MGraph &G)
 { // 初始條件: 圖G存在。操作結果: 銷毀圖G
   int i,j;
   if(G.kind<2) // 有向
     for(i=0;i<G.vexnum;i++) // 釋放弧的相關信息(如果有的話)
     {
       for(j=0;j<G.vexnum;j++)
         if(G.arcs[i][j].adj==1&&G.kind==0||G.arcs[i][j].adj!=INFINITY&&G.kind==1) // 有向圖的弧||有向網(wǎng)的弧
           if(G.arcs[i][j].info) // 有相關信息
           {
             free(G.arcs[i][j].info);
             G.arcs[i][j].info=NULL;
           }
     }
   else // 無向
     for(i=0;i<G.vexnum;i++) // 釋放邊的相關信息(如果有的話)
       for(j=i+1;j<G.vexnum;j++)
         if(G.arcs[i][j].adj==1&&G.kind==2||G.arcs[i][j].adj!=INFINITY&&G.kind==3) // 無向圖的邊||無向網(wǎng)的邊
           if(G.arcs[i][j].info) // 有相關信息
           {
             free(G.arcs[i][j].info);
             G.arcs[i][j].info=G.arcs[j][i].info=NULL;
           }
   G.vexnum=0;
   G.arcnum=0;
 }

 VertexType& GetVex(MGraph G,int v)
 { // 初始條件: 圖G存在,v是G中某個頂點的序號。操作結果: 返回v的值
   if(v>=G.vexnum||v<0)
     exit(ERROR);
   return G.vexs[v];
 }

 Status PutVex(MGraph &G,VertexType v,VertexType value)
 { // 初始條件: 圖G存在,v是G中某個頂點。操作結果: 對v賦新值value
   int k;
   k=LocateVex(G,v); // k為頂點v在圖G中的序號
   if(k<0)
     return ERROR;
   strcpy(G.vexs[k],value);
   return OK;
 }

 int FirstAdjVex(MGraph G,VertexType v)
 { // 初始條件: 圖G存在,v是G中某個頂點

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
jizz一区二区| 久久er精品视频| 色综合久久九月婷婷色综合| 国产精品久久一级| 91福利国产成人精品照片| 亚洲美女偷拍久久| 欧美精品tushy高清| 久久激情五月激情| 国产精品天天摸av网| 日本精品一区二区三区四区的功能| 亚洲国产成人va在线观看天堂| 日韩一区二区免费高清| 麻豆精品视频在线| 国产精品久久国产精麻豆99网站| 欧美午夜一区二区| 精品在线一区二区三区| 国产精品乱码一区二区三区软件 | 99精品欧美一区二区三区综合在线| 亚洲人成小说网站色在线| 欧美日韩国产首页| 国产精品一区二区久久不卡| 亚洲色图欧美激情| 欧美一区二区三区免费在线看| 国产aⅴ精品一区二区三区色成熟| 国产精品欧美一级免费| 欧美电影一区二区| 粉嫩av亚洲一区二区图片| 一卡二卡三卡日韩欧美| 精品国产一区久久| 欧洲精品一区二区三区在线观看| 蜜桃视频在线观看一区二区| 国产精品伦理在线| 欧美一区二区在线看| 99久久er热在这里只有精品66| 日韩国产在线观看一区| 中文字幕+乱码+中文字幕一区| 欧美日产国产精品| 91最新地址在线播放| 国产真实乱偷精品视频免| 亚洲观看高清完整版在线观看| 欧美精彩视频一区二区三区| 欧美一级专区免费大片| 91麻豆国产精品久久| 国产资源精品在线观看| 日精品一区二区| 亚洲免费看黄网站| 国产欧美日韩一区二区三区在线观看| 欧美性videosxxxxx| 成人理论电影网| 黄一区二区三区| 日韩av成人高清| 亚洲制服丝袜在线| 亚洲视频一区在线| 中文字幕欧美国产| 久久久国产午夜精品| 日韩欧美资源站| 欧美三级日韩三级国产三级| 99re亚洲国产精品| 国产盗摄女厕一区二区三区| 裸体在线国模精品偷拍| 日本系列欧美系列| 丝袜a∨在线一区二区三区不卡| 亚洲免费av在线| 亚洲女同女同女同女同女同69| 久久久久久久久免费| 日韩一区二区中文字幕| 欧美精品色综合| 欧美日韩国产综合草草| 欧美性生活影院| 欧美日韩中文精品| 91免费在线播放| 91精品福利在线| 色婷婷综合久久久中文一区二区 | 丁香亚洲综合激情啪啪综合| 日本不卡免费在线视频| 日本午夜一区二区| 精品亚洲成av人在线观看| 精品在线免费观看| 国产真实乱子伦精品视频| 国产一区二区精品久久99| 久久se这里有精品| 国产精一区二区三区| 国产福利精品一区二区| 婷婷开心激情综合| 久久这里只有精品首页| 99国产一区二区三精品乱码| 成人av中文字幕| 一本久道中文字幕精品亚洲嫩| 91麻豆免费看| 欧美日韩夫妻久久| 欧美一级在线观看| 国产婷婷色一区二区三区四区 | 欧美亚洲尤物久久| 91精品婷婷国产综合久久竹菊| 欧美成人video| 欧美激情中文不卡| 一区二区三区不卡视频| 五月婷婷另类国产| 狠狠色丁香婷婷综合| 国产激情91久久精品导航 | 中文字幕巨乱亚洲| 一区二区三区在线视频免费| 日韩电影在线看| 国产黄人亚洲片| 欧美性大战xxxxx久久久| 日韩精品专区在线| 国产精品久久久久久久久免费桃花 | 国产精品香蕉一区二区三区| 国产成人在线免费观看| 色一区在线观看| 日韩欧美成人激情| 国产精品久久久久9999吃药| 午夜精品成人在线视频| 国产精品888| 欧美日韩国产高清一区二区| 久久久久久亚洲综合| 一区二区三区色| 国产综合久久久久久鬼色| 91香蕉国产在线观看软件| 日韩三级免费观看| 亚洲三级久久久| 精品一区二区三区久久久| 不卡高清视频专区| 日韩美女在线视频| 亚洲综合一二三区| 国产精品69毛片高清亚洲| 欧美久久一二区| 国产精品短视频| 捆绑调教一区二区三区| 色综合久久综合网97色综合| 精品粉嫩aⅴ一区二区三区四区| 一区二区三区高清| 波多野结衣中文字幕一区二区三区| 欧美一级艳片视频免费观看| 国产专区欧美精品| 欧美日本韩国一区二区三区视频| 亚洲国产激情av| 久久综合综合久久综合| 欧美视频你懂的| 日韩毛片一二三区| 成人午夜激情影院| 久久久久久免费毛片精品| 日韩电影免费在线| 欧美在线观看一区| 亚洲色图色小说| 成人h动漫精品| 久久精品亚洲精品国产欧美| 免费的国产精品| 欧美日本在线一区| 亚洲一区二区三区四区在线免费观看 | 欧美日韩美女一区二区| 自拍偷拍亚洲欧美日韩| 大美女一区二区三区| 精品国产凹凸成av人网站| 亚洲成人av免费| 色婷婷精品大视频在线蜜桃视频| 欧美国产综合色视频| 国产九色精品成人porny| 精品日本一线二线三线不卡| 美女久久久精品| 欧美一区午夜视频在线观看| 午夜影视日本亚洲欧洲精品| 在线亚洲一区二区| 亚洲精品成人在线| 91国产免费看| 亚洲成人动漫在线观看| 欧美日韩精品一区二区在线播放 | 日韩极品在线观看| 欧美男男青年gay1069videost| 亚洲电影一级黄| 欧美日韩国产精选| 日本欧美一区二区| 精品久久久久久久人人人人传媒| 欧美aaa在线| 精品sm捆绑视频| 国产v综合v亚洲欧| 中文字幕在线一区| 91丝袜国产在线播放| 亚洲人吸女人奶水| 欧美性感一类影片在线播放| 日韩中文字幕亚洲一区二区va在线| 欧美日韩国产综合视频在线观看| 青娱乐精品视频| 久久夜色精品一区| 成人动漫一区二区三区| 尤物av一区二区| 91麻豆精品久久久久蜜臀| 久久国产福利国产秒拍| 久久久国产精品麻豆| 一本一道久久a久久精品| 爽好久久久欧美精品| 精品久久久久久最新网址| 成人黄色网址在线观看| 亚洲线精品一区二区三区八戒| 欧美一区二区三区日韩| 国产成人在线网站| 亚洲尤物在线视频观看| 日韩欧美亚洲另类制服综合在线| 国产不卡视频在线播放| 一区二区三区日韩欧美|