µÚ7Õ ͼ½á¹¹
}
ArcNode* p;
for(i=0;i (5)ÑÝʾ³ÌÐòÖ÷º¯Êý ³ÌÐòÖзֱð½¨Á¢ÓÐÏòͼG1¡¢ÎÞÏòͼG2¡¢ÓÐÏòÍøG3ºÍÎÞÏòÍøG4µÄÁÚ½Ó±í£¬²¢ÏÔʾÊä³öËù½¨Á¢µÄÿ¸öÁÚ½Ó±íµÄÊý¾ÝÐÅÏ¢¡£ void main() { ALGraph G1,G2,G3,G4; GKind gk1=DG,gk2=UDG,gk3=DN,gk4=UDN; cout<<\½¨Á¢Ò»¸öÓÐÏòͼµÄÁÚ½Ó±íG1:\\n\ CreateGraph_AL(G1,gk1); cout<<\½¨Á¢Ò»¸öÎÞÏòͼµÄÁÚ½Ó±íG2:\\n\ CreateGraph_AL(G2,gk2); cout<<\ÓÐÏòͼG1µÄÁÚ½Ó±íΪ:\\n\ DisplyAL(G1); cout<<\ÎÞÏòͼG2µÄÁÚ½Ó±íΪ:\\n\ DisplyAL(G2); cout<<\ cout<<\½¨Á¢Ò»¸öÓÐÏòÍøµÄÁÚ½Ó±íG3:\\n\ CreateGraph_AL(G3,gk3); cout<<\½¨Á¢Ò»¸öÎÞÏòÍøµÄÁÚ½Ó±íG4:\\n\ CreateGraph_AL(G4,gk4); cout<<\ÓÐÏòÍøG3µÄÁÚ½Ó±íΪ:\\n\ DisplyAL(G3); cout<<\ÎÞÏòÍøG4µÄÁÚ½Ó±íΪ:\\n\ DisplyAL(G4); } ³ÌÐòÔËÐÐÑÝʾ½á¹ûΪ£º ½¨Á¢Ò»¸öÓÐÏòͼµÄÁÚ½Ó±íG1: ÊäÈë¶¥µãÊýºÍ±ß(»¡)Êývexnum arcnum:6 8¨L -.179.- µÚ7Õ ͼ½á¹¹ °´Ä³ÖÖ˳ÐòÊäÈë6¸ö¶¥µãµÄÖµ: 1 2 3 4 5 6¨L ÊäÈëͼÖÐ8Ìõ±ß(»¡)µÄÐÅÏ¢u v: 1 2 1 4 3 1 3 6 4 3 5 4 6 1 6 5¨L ½¨Á¢Ò»¸öÎÞÏòͼµÄÁÚ½Ó±íG2: ÊäÈë¶¥µãÊýºÍ±ß(»¡)Êývexnum arcnum:6 7¨L °´Ä³ÖÖ˳ÐòÊäÈë6¸ö¶¥µãµÄÖµ: 1 2 3 4 5 6¨L ÊäÈëͼÖÐ7Ìõ±ß(»¡)µÄÐÅÏ¢u v: 1 2 1 4 2 3 2 6 5 3 5 6 5 4¨L ÓÐÏòͼG1µÄÁÚ½Ó±íΪ: 0 (1): [3] [1] 1 (2): 2 (3): [5] [0] 3 (4): [2] 4 (5): [3] 5 (6): [4] [0] ÎÞÏòͼG2µÄÁÚ½Ó±íΪ: 0 (1): [3] [1] 1 (2): [5] [2] [0] 2 (3): [4] [1] 3 (4): [4] [0] 4 (5): [3] [5] [2] 5 (6): [4] [1] *************************************** ½¨Á¢Ò»¸öÓÐÏòÍøµÄÁÚ½Ó±íG3: ÊäÈë¶¥µãÊýºÍ±ß(»¡)Êývexnum arcnum:4 4¨L °´Ä³ÖÖ˳ÐòÊäÈë4¸ö¶¥µãµÄÖµ: 1 2 3 4¨L ÊäÈëͼÖÐ4Ìõ±ß(»¡)ºÍȨµÄÐÅÏ¢u v w: 1 2 7 1 3 1 3 4 5 4 1 9¨L ½¨Á¢Ò»¸öÎÞÏòÍøµÄÁÚ½Ó±íG4: ÊäÈë¶¥µãÊýºÍ±ß(»¡)Êývexnum arcnum:5 5¨L °´Ä³ÖÖ˳ÐòÊäÈë5¸ö¶¥µãµÄÖµ: 1 2 3 4 5¨L ÊäÈëͼÖÐ5Ìõ±ß(»¡)ºÍȨµÄÐÅÏ¢u v w: 1 2 9 4 1 8 4 2 3 4 5 1 3 5 12¨L ÓÐÏòÍøG3µÄÁÚ½Ó±íΪ: 0 (1): [2,1] [1,7] 1 (2): 2 (3): [3,5] 3 (4): [0,9] ÎÞÏòÍøG4µÄÁÚ½Ó±íΪ: 0 (1): [3,8] [1,9] 1 (2): [3,3] [0,9] 2 (3): [4,12] 3 (4): [4,1] [1,3] [0,8] 4 (5): [2,12] [3,1] ˵Ã÷£º £¨1£©³ÌÐòÑÝʾÖн¨Á¢µÄÊÇͼ7.1¡¢Í¼7.3ÖÐ4¸öͼµÄÒ»ÖÖÁÚ½Ó±í±íʾ£ºG1.vertices¡¢G2.vertices¡¢G3.verticesºÍG4.vertices¡£ £¨2£©ÔÚ³ÌÐòÏÔʾµÄ½á¹ûÖУ¬µÚÒ»ÁÐΪ¶¥µãµÄϱ꣬µÚ¶þÁÐΪͼÖÐËùÓж¥µãµÄÖµ¡£¶ÔÓÚͼ£¬µ¥Á´±íÖеÄÿһÏî±íʾ¸Ã¶¥µãµÄÁÚ½ÓµãµÄϱꣻ¶ÔÓÚÍø£¬µ¥Á´±íÖеÄÿһÏî±íʾ¸Ã¶¥µãµÄÁÚ½ÓµãµÄϱêÖµºÍÏàÓ¦±ß£¨»¡£©µÄȨֵ¡£ £¨3£©ÔÚ½¨Á¢ÁÚ½Ó±íʱ£¬ÓÉÓÚÊäÈëµÄÊǶ¥µãÐÅÏ¢£¬ËùÒÔÒªÏÈͨ¹ý²éÕÒÇóµÃ¸Ã¶¥µãÔÚͼÖеÄλÖã¬ÔÙ½«ÏàÓ¦½áµã²åÈëµ½¶ÔÓ¦µ¥Á´±íµÄÊײ¿£¬ËùÒÔ£¬¸Ã²Ù×÷µÄʱ¼ä¸´ÔÓ¶ÈΪO(n*e)¡£ 7.2.3ÓÐÏòͼµÄÊ®×ÖÁ´±í±íʾ·¨ Ê®×ÖÁ´±íÊÇÓÐÏòͼµÄÁíÒ»ÖÖÁ´Ê½´æ´¢½á¹¹£¬¸Ã·½·¨Êǽ«ÓÐÏòͼµÄÁÚ½Ó±íºÍÄæÁÚ½Ó±í½áºÏÆðÀ´µÃµ½µÄÒ»ÖÖÁ´±í¡£ 1£®Ê®×ÖÁ´±íµÄ¶¨Òå ÀàËÆÁÚ½Ó±í£¬ÔÚÊ®×ÖÁ´±íÖаüº¬Á´±íµÄÍ·½áµãºÍ»¡½áµãÁ½ÖÖÀàÐ͵Ľáµã£¬Í¼7.13¸ø³öÊ®×ÖÁ´½áµã½á¹¹µÄʾͼ¡£ ÆäÖУ¬Í·½áµã°üº¬¶¥µãÐÅÏ¢Óò(data)¡¢Ö¸ÏòÒԸö¥µãΪ»¡Í·µÄµÚÒ»¸ö»¡½áµãµÄÖ¸ÕëÓò(firstin)¡¢Ö¸ÏòÒԸö¥µãΪ»¡Î²µÄµÚÒ»¸ö»¡½áµãµÄÖ¸ÕëÓò(firstout)£¬±íµÄËùÓÐÍ·½áµãÒÔ˳Ðò´æ´¢¡£»¡½áµã°üº¬±íʾ»¡Î²¶¥µãϱêµÄβÓò(tailvex)¡¢±íʾ»¡Í·¶¥µãϱêµÄÍ·Óò(headvex)¡¢Ö¸Ïò»¡Í·ÏàͬµÄÏÂÒ»Ìõ»¡µÄÖ¸ÕëÓò(hlink)¡¢Ö¸Ïò»¡Î²ÏàͬµÄÏÂÒ»Ìõ»¡µÄÖ¸ÕëÓò(tlink)¡¢»¡µÄÐÅÏ¢£¨ÈçȨ -.180.- µÚ7Õ ͼ½á¹¹ Öµ£©Óò(info)¡£ ÀýÈ磬ͼ7.14¸ø³öÓÐÏòͼµÄÒ»ÖÖÊ®×ÖÁ´±í±íʾ¡£ Èç¹û½«ÓÐÏòͼµÄÁÚ½Ó¾ØÕó¿´³ÉÊÇÏ¡Êè¾ØÕóµÄ»°£¬ÔòÊ®×ÖÁ´±íÒ²¿ÉÒÔ¿´³ÉÊÇÁÚ½Ó¾ØÕóµÄÊ®×ÖÁ´±í´æ´¢½á¹¹¡£ÔÚÓÐÏòͼµÄÊ®×ÖÁ´±í±íʾÖУ¬Á´±íµÄÍ·½áµãÖ®¼äÊÇ˳Ðò´æ´¢½á¹¹£¬»¡½áµãËùÔÚµÄÁ´±íÊÇ·ÇÑ»·Á´±í£¬½áµãÖ®¼äµÄÏà¶ÔλÖÃ×ÔÈ»Ðγɣ¬²»Ò»¶¨°´¶¥µãÐòÁкÅÓÐÐò¡£Óɴ˿ɼû£¬ÓÐÏòͼµÄÊ®×ÖÁ´±í±íʾ·½Ê½ÊDz»Î¨Ò»µÄ¡£ 2£®Ê®×ÖÁ´±íµÄ´æ´¢±íʾÓëʵÏÖ (1)Ê®×ÖÁ´±í´æ´¢½á¹¹µÄÀàÐͶ¨Òå ÏÂÃæ·Ö±ð¸ø³öÊ®×ÖÁ´»¡½áµã(ArcBox)¡¢¶¥µã½áµã(OLVexNode)¡¢Ê®×ÖÁ´±í(OLGraph)µÄÀàÐͶ¨Òå¡£ struct ArcBox{ //»¡½áµãµÄ½á¹¹¶¨Òå int tailvex,headvex; //¶¨Ò廡βºÍ»¡Í·¶¥µãµÄλÖà ArcBox *hlink,*tlink; //»¡Í·Ïàͬ¡¢»¡Î²ÏàͬµÄ»¡µÄÁ´Óò int weight; //¶¨ÒåÓÐÏòÍøÖл¡µÄȨֵ }; struct OLVexNode{ //¶¥µã½áµã½á¹¹¶¨Òå VType data; //¶¥µãÐÅÏ¢ ArcBox *firstin,*firstout; //·Ö±ðÖ¸Ïò¶¥µãµÄµÚÒ»ÌõÈ뻡ºÍ³ö»¡ }; struct OLGraph{ //¶¨ÒåÊ®×ÖÁ´±íÀàÐÍ OLVexNode *xlist; //Á´±íÍ·½áµãÊý×éÖ¸Õë int vexnum,arcnum; //ÓÐÏòͼµÄ¶¥µãÊýºÍ»¡Êý GKind kind; }; (2)Ê®×ÖÁ´±íµÄ²éÕÒ²Ù×÷ º¯Êýint LocateVex_OLG(OLGraph G,VType u) ·µ»Ø¶¥µãuÔÚͼGÖеÄλÖã¬Èç¹û²éÕÒʧ°ÜÔò·µ»Ø0Öµ¡£ int LocateVex_OLG(OLGraph G,VType u) { int i; for(i=0;i -.181.- µÚ7Õ ͼ½á¹¹ } else return(0); (3)½¨Á¢Ê®×ÖÁ´±íµÄË㷨ʵÏÖ º¯Êývoid CreateGraph_OLG(OLGraph& G,GKind kind)¸ù¾ÝͼµÄÀàÐÍkind½¨Á¢Ò»¸öÓÐÏòͼ»òÓÐÏòÍøµÄÊ®×ÖÁ´±íG¡£ void CreateGraph_OLG(OLGraph& G,GKind kind) { int i,j,k; VType u,v; ArcBox* pr; G.kind=kind; cout<<\ÊäÈë¶¥µãÊýºÍ±ß(»¡)Êývexnum arcnum:\ cin>>G.vexnum>>G.arcnum; G.xlist=new OLVexNode[G.vexnum]; //Ϊ¶¥µãÊý×é·ÖÅäÄÚ´æ¿Õ¼ä cout<<\°´Ä³ÖÖ˳ÐòÊäÈë\.vexnum<<\¸ö¶¥µãµÄÖµ:\\n\ for(i=0;i º¯Êývoid DisplyOLG(OLGraph G)·Ö±ð°´ÁÚ½Ó±íºÍÄæÁÚ½Ó±í·½Ê½ÏÔʾµ±Ç°Ê®×ÖÁ´±íGµÄÐÅÏ¢¡£ void DisplyOLG(OLGraph G) { int i; ArcBox* p; -.182.-