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

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

?? graph_criticalpath.c

?? 程序百例精解cyuyan_jcbc100li 程序百例精解cyuyan_jcbc100li程序百例精解cyuyan_jcbc100li
?? C
字號:
/* 圖的關鍵路徑問題的算法*/


#include<stdio.h>
#include<stdlib.h>
#define MAXVEX 100
#define TRUE 1
#define FALSE 0

typedef struct EdgeNode EdgeNode;
typedef struct EdgeNode * PEdgeNode;
typedef struct EdgeNode * EdgeList;
typedef float AdjType;

struct EdgeNode {
    int endvex;			/* 相鄰頂點字段 */
    AdjType weight;
    PEdgeNode nextedge;	/* 鏈字段 */
};						/* 邊表中的結點 */

typedef struct {
    /*VexType vertex;*/		/* 頂點信息 */
    EdgeList edgelist;		/* 邊表頭指針 */
} VexNode;				/* 頂點表中的結點 */

typedef struct {
    int n;				/* 圖的頂點個數 */
    VexNode vexs[MAXVEX];
} GraphList;


typedef struct {
    /*VexType vexs[MAXVEX];*/	/* 頂點信息 */	
    int vexsno[MAXVEX];		/* 頂點在頂點表中的下標值 */
} Topo;


/* 求出圖中所有頂點的入度 */
/* 方法是搜索整個鄰接表 */
void findInDegree(GraphList* g, int *inDegree) {
    int i; 
    PEdgeNode p;        

    for (i = 0; i < g->n; i++)
        inDegree[i] = 0;

    for (i = 0; i < g->n; i++) {
        p = g->vexs[i].edgelist;
        while(p) {
            inDegree[p->endvex]++; 
            p = p->nextedge; 
        }
    }
}

void makeNewAOV(EdgeList p, int* indegree, int* top) {
    int k;

    while (p) {                       /* 刪除以該頂點為起點的邊 */
        k = p->endvex; 
        indegree[k]--;
        if (indegree[k] == 0) {         /* 將新的入度為零的邊入棧 */
            indegree[k] = *top;
            *top = k; 
        }
        p = p->nextedge;
    }
}

/* 拓撲排序算法*/
int topoSort(GraphList * paov, Topo * ptopo) {
    EdgeList p;
    int i, j, nodeno = 0, top = -1;
    int indegree[MAXVEX];

    findInDegree(paov, indegree);    /* 求出圖中所有頂點的入度 */
    for (i = 0; i < paov->n; i++)
        if (indegree[i] == 0) {        /* 將入度為零的頂點入棧 */ 
            indegree[i] = top; top = i;
        }

    while (top != -1) {                /* 棧不為空 */
        j = top;
        top = indegree[top];               /* 取出當前棧頂元素 */
        /*ptopo->vexs[nodeno]=paov->vexs[j].vertex;*/ /* 將該元素輸出到拓撲序列中 */
        ptopo->vexsno[nodeno++] = j;
        p = paov->vexs[j].edgelist;    /* 取該元素邊表中的第一個邊結點 */
        /*刪除該結點,構造新的AOV網*/
        /*對indegree數組進行修改*/
        makeNewAOV(p, indegree, &top);
    }

    if (nodeno < paov->n) {       /* AOV網中存在回路 */
        printf("The aov network has a cycle\n");
        return FALSE;
    }
    
    return TRUE;
}

void insert(GraphList* p,int a,int b,float weight){
    EdgeList pp;
    PEdgeNode temp;
    temp = (PEdgeNode)malloc(sizeof(EdgeNode));
    temp->endvex = b;
    temp->nextedge = NULL;
    temp->weight = weight;
    pp = p->vexs[a].edgelist;
    if (pp == NULL)
        p->vexs[a].edgelist = temp;
    else {
        while (pp->nextedge != NULL)
            pp = pp->nextedge;
        pp->nextedge = temp;
    }
}
	
/* 鄰接表的構造*/
GraphList* makeList(){
    GraphList* p;
    int i;
    p = (GraphList*)malloc(sizeof(GraphList));
    p->n = 9;
    for (i = 0; i < p->n; i++)
        p->vexs[i].edgelist = NULL;
    insert(p,0,1,6);
    insert(p,0,2,4);
    insert(p,0,3,5);
    insert(p,1,4,1);
    insert(p,2,4,1);
    insert(p,3,5,2);
    insert(p,4,6,9);
    insert(p,4,7,7);
    insert(p,5,7,4);
    insert(p,6,8,2);
    insert(p,7,8,4);
    return p;
}

int CriticalPath(GraphList * paoe);

/* 主程序*/
int main(){
    GraphList* p;
    /*int i;*/
    p = makeList();
    /*if(topoSort(p,&topo)==TRUE)
        for(i=0;i<p->n;i++)
            printf("%d ",topo.vexsno[i]);*/
    if (CriticalPath(p) == FALSE)
        printf("There is no critical path!\n");
    return 0;
}


/*******************************************/
#define MAXEDGE 100 

/* 計算數組ee*/
void countee(GraphList* paoe,Topo* ptopo, AdjType* ee) {
    int i, j, k;
    EdgeList p;

    for (i = 0; i < paoe->n; i++) ee[i] = 0;
    for (k = 0; k < paoe->n; k++) {       /* 求事件vj可能的最早發生時間ee(j) */
        i = ptopo->vexsno[k];
        p = paoe->vexs[i].edgelist;
        while (p != NULL) {
            j = p->endvex;
            if (ee[i] + p->weight > ee[j])
                ee[j] = ee[i] + p->weight;
            p = p->nextedge;
        }
    }
}


/* 計算數組le*/
void countle(GraphList * paoe,Topo* ptopo, AdjType* ee, AdjType* le) {
    int i, j, k;
    EdgeList p;
    for (i = 0; i < paoe->n; i++)         /* 求事件vi允許的最遲發生時間le(i) */
        le[i] = ee[paoe->n - 1];
    for (k = paoe->n - 2; k >= 0; k--) {
        i = ptopo->vexsno[k];
        p = paoe->vexs[i].edgelist;
        while (p != NULL) {
            j = p->endvex;
            if( le[j] - p->weight < le[i] )
                le[i] = le[j] - p->weight;
            p = p->nextedge;
        }
    }
}

/* 計算數組e,l并輸出結果*/
void counte_l(GraphList * paoe,Topo* ptopo, AdjType* ee,
                AdjType* le, AdjType* e, AdjType* l) {
    int i, j, k = 0;
    EdgeList p;
    /* 求活動ak的最早開始時間e(k)及最晚開始時間l(k) */
    for (i = 0; i < paoe->n; i++) {
        p = paoe->vexs[i].edgelist;
        while (p != NULL) {
            j = p->endvex;
            e[k] = ee[i];
            l[k] = le[j] - p->weight;
            if (e[k] == l[k])
                printf("<v%2d, v%2d>, ", i, j);
            k++;
            p = p->nextedge;
        }
    }
}

/* 關鍵路徑算法*/
int CriticalPath(GraphList * paoe) {
    AdjType ee[MAXVEX], le[MAXVEX], l[MAXEDGE], e[MAXEDGE];
    Topo topo;
    if (topoSort(paoe, &topo) == FALSE)               /* 求AOE網的一個拓撲序列 */
        return FALSE;
    countee(paoe, &topo, ee); /*計算數組ee*/
    countle(paoe, &topo, ee, le);/*計算數組le*/
    counte_l(paoe, &topo, ee, le, e, l);/*計算數組e,l并輸出結果*/
    printf("\n");
    return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色婷婷| 成人精品视频网站| 99v久久综合狠狠综合久久| 欧美军同video69gay| 国产精品伦理在线| 日本 国产 欧美色综合| 色婷婷久久99综合精品jk白丝| 精品乱人伦小说| 天天色天天操综合| 日本高清不卡aⅴ免费网站| 国产亚洲精久久久久久| 麻豆视频一区二区| 欧美一区二区三区在| 夜色激情一区二区| 99久久免费精品高清特色大片| 欧美不卡一区二区| 日韩在线一区二区三区| 91久久线看在观草草青青| 欧美激情一二三区| 国产伦精品一区二区三区免费迷 | 国产成人鲁色资源国产91色综| 精品视频在线免费看| 日韩毛片视频在线看| 成人免费看片app下载| 久久久精品tv| 国产美女av一区二区三区| 欧美videos大乳护士334| 日本美女视频一区二区| 欧美一区二区国产| 日本成人中文字幕在线视频 | 亚洲国产精品黑人久久久| 精品中文字幕一区二区小辣椒 | 亚瑟在线精品视频| 欧美亚一区二区| 亚洲午夜羞羞片| 欧美少妇一区二区| 日本伊人午夜精品| 精品三级在线看| 国产一区二区91| 国产精品久久久久久久久免费桃花| 国产二区国产一区在线观看| 国产精品欧美精品| 91蝌蚪porny九色| 亚洲国产综合在线| 91精品国产手机| 国内精品写真在线观看| 国产日韩欧美电影| 91网站最新网址| 亚洲国产精品一区二区久久| 欧美私模裸体表演在线观看| 日韩av电影免费观看高清完整版 | 天堂成人免费av电影一区| 在线播放91灌醉迷j高跟美女| 全国精品久久少妇| 久久久青草青青国产亚洲免观| 成人小视频在线观看| 亚洲精品综合在线| 欧美一区二区三区色| 国产精品亚洲成人| 亚洲视频免费观看| 日韩欧美在线123| 成人自拍视频在线观看| 亚洲综合一区二区精品导航| 欧美精品丝袜中出| 成人亚洲一区二区一| 午夜久久久影院| 久久九九久久九九| 欧美日韩免费不卡视频一区二区三区| 久久精品国产亚洲5555| 国产精品久久精品日日| 欧美美女直播网站| 国产精品99久久久久| 亚洲国产精品麻豆| 国产欧美视频一区二区三区| 欧美日韩综合在线| 成人免费视频app| 日韩精品国产精品| 亚洲欧美在线视频| 精品国产91亚洲一区二区三区婷婷| 国产成人在线视频网站| 男人的天堂亚洲一区| 亚洲欧美色综合| 欧美精品一区视频| 777亚洲妇女| 色吧成人激情小说| 成人黄色电影在线| 国内外成人在线| 日韩制服丝袜av| 亚洲综合久久久久| 中文字幕一区av| 久久久久久久精| 欧美大尺度电影在线| 欧美色男人天堂| 在线观看一区不卡| 色婷婷亚洲综合| 91在线一区二区| 成a人片国产精品| 国产乱理伦片在线观看夜一区| 人人精品人人爱| 日本中文字幕一区| 午夜精品免费在线观看| 亚洲五码中文字幕| 一区二区三国产精华液| 亚洲免费观看高清完整| 中文字幕一区二区三| 国产精品久久国产精麻豆99网站| 久久久蜜桃精品| 久久精品一区二区三区四区| 精品伦理精品一区| 精品国产乱码久久久久久闺蜜| 欧美一卡二卡三卡四卡| 欧美女孩性生活视频| 69成人精品免费视频| 欧美久久久久久久久久| 欧美精品亚洲一区二区在线播放| 欧美电影影音先锋| 欧美一卡2卡3卡4卡| 欧美成人伊人久久综合网| 精品少妇一区二区三区日产乱码 | 一区二区三区在线看| 亚洲乱码一区二区三区在线观看| 亚洲品质自拍视频网站| 亚洲免费观看高清在线观看| 亚洲一区二区精品3399| 亚洲成a人片在线不卡一二三区| 亚洲综合男人的天堂| 婷婷开心久久网| 国产原创一区二区| 波多野结衣的一区二区三区| av中文字幕一区| 色综合久久中文综合久久牛| 欧美日韩情趣电影| 日韩欧美成人午夜| 国产精品人成在线观看免费| 一区二区三区四区视频精品免费| 亚洲成人www| 激情综合五月天| 成人av网在线| 欧美军同video69gay| 久久这里只有精品视频网| 国产精品污www在线观看| 亚洲黄色av一区| 久久精品国产免费看久久精品| 国产精品系列在线观看| 在线免费亚洲电影| 精品国内二区三区| 亚洲精品一二三| 另类小说图片综合网| 成人国产视频在线观看| 欧美精品在线一区二区三区| 2017欧美狠狠色| 亚洲国产日韩一区二区| 国产九色精品成人porny| 91老司机福利 在线| 久久综合久久综合久久综合| 亚洲欧美色一区| 国产一区二区三区高清播放| 99精品一区二区三区| 欧美一级一区二区| 日韩毛片精品高清免费| 九九久久精品视频| 欧美日韩国产一级| 欧美极品另类videosde| 蜜臀av亚洲一区中文字幕| 99久久99久久久精品齐齐| 欧美大片在线观看| 亚洲成人免费视| 97精品久久久午夜一区二区三区| 日韩一区二区免费在线观看| 亚洲精品国产a| 成人激情动漫在线观看| 精品精品国产高清a毛片牛牛| 亚洲最新视频在线观看| eeuss影院一区二区三区| 欧美一卡二卡三卡| 亚洲v精品v日韩v欧美v专区| 99国产一区二区三精品乱码| 欧美精品一区二区三区在线| 亚洲国产精品久久久男人的天堂| 成人精品国产福利| 久久人人超碰精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩久久久一区| 亚洲女性喷水在线观看一区| 国产精品一区二区91| 欧美精品一区二区三区很污很色的 | 图片区日韩欧美亚洲| 色综合天天综合网天天看片 | 欧美美女网站色| 亚洲国产欧美在线| 欧美日韩综合在线免费观看| 亚洲婷婷国产精品电影人久久| 成人激情免费电影网址| 国产精品亲子伦对白| 成人精品在线视频观看| 国产精品每日更新在线播放网址| 精品一区中文字幕| 91亚洲精华国产精华精华液| 69av一区二区三区| 天堂成人免费av电影一区|