freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-文庫吧資料

2024-08-17 04:53本頁面
  

【正文】 { printf(請輸入?。ㄈ鏏B,其中AB與BA是不同的?。篭n)。 G.vertices[i].firstarc=NULL。 scanf(%c,amp。i=G.vexnum。 } printf(請輸入個頂點:\n)。 if(G.vexnum20){ printf(您輸入的頂點個數(shù)超過最大值)。 ,amp。 printf(鄰接表:請輸入頂點的個數(shù)和弧的個數(shù):)。AList p,q。G){ int i,j,m,n,key[MAX_VERTEX_NUM]。 } } } return OK。 G.arcs[i][j].adj=w。 i=LocateVex(G,x)。y,amp。 scanf(%c%c %d,amp。k=G.arum。 } } else{ printf(請輸入無向網(wǎng)的兩個相鄰的頂點(x,y)以及相應(yīng)的權(quán)值w:\n)。 j=LocateVex(G,y)。w)。x,amp。k++){fflush(stdin)。 for(k=1。j++) G.arcs[i][j].adj=INT_MAX。i++) for(j=1。 } } } else{ for(i=1。 G.arcs[i][j].adj=1。 i=LocateVex(G,x)。x,amp。k++){fflush(stdin)。 for(k=1。 G.arcs[i][j].adj=1。 i=LocateVex(G,x)。x,amp。k++){fflush(stdin)。 for(k=1。j++) G.arcs[i][j].adj=0。i++) for(j=1。} if(G.kind==DG||G.kind==UDG){ for(i=1。 scanf(%c,amp。i=G.vexnum。 } printf(請輸入%d個頂點\n,G.vexnum)。 if(G.vexnum20){ printf(您輸入的頂點個數(shù)超過最大值)。,amp。} printf(鄰接矩陣:請輸入定點的個數(shù)、弧的個數(shù):)。 if(!SetGraphKind(G,option)) {printf(對圖類型的設(shè)置失敗)。G){ int i,j,k,w。 return ERROR。 return OK。e){ if(==) return ERROR。 } //元素入棧 int Pop(SqStack amp。 } *++=e。 =+。S,int e){ if(=){ =(int*)realloc(,(+STACKINCREAMENT)*sizeof(int))。 return OK。 =。S){ =(int*)malloc(STACK_INIT_SIZE*sizeof(int))。 return ERROR。 return OK。 if(==p) =。 e=pdata。 if(==) return ERROR。Q,int amp。 return OK。 next=p。 pdata=e。 p=(QueuePre)malloc(sizeof(QNode))。 } //隊列創(chuàng)建 int EnQueue(LinkQueue amp。 next=NULL。Q){ ==(QueuePre)malloc(sizeof(QNode))。 return ERROR。m++){ if(G.vertices[m].data==v) return m。 for(m=1。 } return ERROR。m=G.vexnum。 } //鄰接表類型設(shè)置 int LocateVex(MGraph G,char v){ int m。 default: return ERROR。 case 4: =UDN。 case 3: =UDG。 case 2: =DN。G,int option){ switch(option){ case 1: =DG。 } return OK。break。break。break。break。 //頂點權(quán)值記錄數(shù)組 int SetGraphKind(MGraph amp。 //頂點訪問標記數(shù)組 int indegree[MAX_VERTEX_NUM]。 //求最小生成樹中的輔助數(shù)組 int option。 int lowcost。 }SqStack。 int *top。 }LinkQueue。 typedef struct{ QueuePre front。 struct QNode *next。 }ALGraph。 int vexnum,arum。 }VNode,AdjList[MAX_VERTEX_NUM]。 typedef struct VNode { char data。 struct ArcNode *nextarc。 //鄰接矩陣 typedef struct ArcNode{ int adjvex。 GraphKind kind。 AdjMatrix arcs。 }ArcCell, AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]。 typedef struct ArcCell { int adj。其次是棧和隊列的基本操作和實現(xiàn),四種圖的創(chuàng)建和顯示,然后是基于兩種存儲結(jié)構(gòu)的各種算法的現(xiàn),最后是三層顯示輸出菜單。顯然,長度為D[j]=Min{D[i]|vi屬于V}的路徑就是從v出發(fā)的長度最短的一條路徑。 從匯點vn出發(fā),令vl[n1]=ve[n1],按逆拓撲有序求其余各頂點的最遲發(fā)生時間vl[i]; 根據(jù)各頂點的和值,求每條弧的最早開始時間e(s)和最遲開始時間e(s),若某條弧滿足條件e(s)=l(s),則為關(guān)鍵活動。求關(guān)鍵路徑的算法如下: 輸入e條弧,建立AOE網(wǎng)的存儲結(jié)構(gòu); 從源點v0出發(fā),令ve[0]=0,按拓撲有序求其余各頂點的最早發(fā)生時間。拓撲排序主要有兩個方面的操作: (1)在有向圖中選擇一個沒有前驅(qū)的頂點并輸出; (2)在圖中刪除該頂點和所有以它為尾的弧。Kruskal算法是從網(wǎng)中找出所有路徑最小的一條路徑,記下已訪問該路徑的兩個頂點,再次從圖中找出剩下路徑中的最小路徑,重復(fù)上述過程,直至所有頂點都被訪問完成,按訪問的順序依次輸出各頂點,即構(gòu)造了一棵最小生成樹。 求無向網(wǎng)的最小生成樹問題有兩種算法:Prima算法和Kruskal算法。的頂點。以某個頂點為起始頂點,由近至遠,依次訪問和該頂點有路徑相通的且路徑長度為1, 2, 3,從圖中的某個頂點出發(fā),訪問此頂點,然后依次從該頂點出發(fā)深度優(yōu)先搜索遍歷圖,直至圖中所有與該頂點有關(guān)的路徑都被訪問到;此時圖中若還有頂點未被訪問到,則另選圖中的一個未被訪問的頂點作為起始點,重述上述過程,直至所有頂點都被訪問到。由于,沒有用到他們,故不再詳細描述。鄰接表存儲結(jié)構(gòu)的優(yōu)點在于其時間復(fù)雜度小。對圖中的每個頂點建立一個單鏈表,每個結(jié)點有三個域組成,鄰接點域adjvex(弧尾在鄰接表鏈表中的位序),鏈域nextarc(下一條?。?,數(shù)據(jù)域info(權(quán)值)。缺點其時間復(fù)雜度是O(n*n)
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1