关键词不能为空

当前您在: 主页 > 英语 >

邻接矩阵表示的带权有向图

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 21:14
tags:

-

2021年2月1日发(作者:猪毛)



实习报告——


“邻接矩阵表示的带权有向图” 演示程序






(一)、程序的功能和特点














主要实 现的功能:


1.


使用邻接矩阵表示带权有向图;





2.


查找指定顶点序号;





3.


判断图是否为空;





4.


判断图是否满;





5.


取得 顶点数、边数、一条边的权值;





6.


插入一个顶点、边;





7.


删除一个顶点、边;



(二)、程序的算法设计




“邻接矩阵的表示”算法:




1.


【逻辑结构与存储结构设计】




逻辑结构:非线性结构——网状结构







B


A





F


C




E


D






存储结构


:


内存中连续的存储结构,邻接矩 阵





2.


【基本操作设计】




按指定输入,生成图并打印该图



删除一个顶点并打印



删除一条边并打印




3.


【算法设计】




插入一个顶点的算法:




首先判断该图是否已满,若已满:插入失败;




否则进行插入:


1.


顶点表增加一个元素



2.


邻接矩阵增加一行一列





删除一个顶点的算法:




判断要删除顶点的存在性,若不存在:出错;




否则:


1.


修改顶点表,


即在顶点数组 中删除




该点;



2.


修改邻接矩阵,


即需要统计与该顶




点相关联的边,


并将这些边也删除




4.


【高级语言代码】




public



class


Graph {



static



int



MaxEdges


=50;



static



int



MaxVertices


=10;



static



int



MaxValue


=9999;


//


无穷大




//


存放顶点的数组




private



char



VerticesList


[]=


new



char


[


MaxVertices


];


//


邻接矩阵(存放两个顶点的权值)



private


int


< p>
Edge


[][]=


new



int


[


MaxVertices


][


MaxVertices


];



private



int



CurrentEdges< /p>


;


//


现有边数




private



int



CurrentVertic es


;


//


现有顶点数




//


构造函数:建立空的邻接矩阵




public


Graph(){




for


(


int


i=0;i<


MaxVertices


;i++)





for


(


int


j=0;j<


MaxVertices


;j++)






if


(i==j)







Edge


[i][j]=0;


//


对角线







else








Edge


[i][j]=

< p>
MaxValue


;




CurrentEdges


=0;


//


现有边数





CurrentVertices


=0;


//


现有顶点数










}



//


取得一条边的权值




public



int


GetWeigh(


int


v1,


int


v2){




if


(v1<0||v1>


CurrentVertices


-1)





return


-1;


//

< p>


-1


表示出错





if


(v 2<0||v2>


CurrentVertices


-1)





return


-1;


//

< p>


-1


表示出错





return



Edge


[v1][v2];



}



//


取得第一个邻接点的序号




public



int


GetFirstNeighbor(


int


v){




if


(v <0||v>


CurrentVertices


-1)





return


-1;




//


邻接矩阵的行号和列号是两个邻 接点的序号




for


(


int


col=0;c ol<


CurrentVertices


;col++)





if< /p>


(


Edge


[v][col]>0&&< /p>


Edge


[v][col]<


MaxVa lue


)






return


col;




return


-1;



}



//


插入一个顶点




public



int


InsertVertex(


char


vertex){




if


(IsGraphFull())





return


-1;


//


插入失败





//


顶点表增加一个元素





VerticesList


[


CurrentVertices


]=ve rtex;




//


邻接矩阵增加一行一列





for


(


int


j=0;j<=


CurrentVertices


;j++){





Edg e


[


CurrentEdges


][j ]=


MaxValue


;





Edge


[j][


CurrentEdges


]=


MaxValue


;




}




Ed ge


[


CurrentEdges


][


CurrentEdges


]=0;




CurrentVertices


++;




return



CurrentVer tices


;


//


插入位置

< p>





}



//


插入一个边




public



boolean


InsertEdge(


int


v1,


int


v2,


int


weight){




if


(v1<0||v1>


CurrentVertices


-1)





return



false

< p>
;


//


出错





if


(v 2<0||v2>


CurrentVertices


-1)





return



false

< p>
;


//


出错





Edge


[v1][v2]=weight;




return



true


;



}



//


删除一个顶点




public



boolean


RemoveVertex(


int


v){




if


(v <0||v>


CurrentVertices


-1)





return



false

< p>
;


//


出错





//


修改顶点表





for


(


int


i=v+1;i<


CurrentVertices


;i++)





Ver ticesList


[i-1]=


VerticesList< /p>


[i];




//


修改邻接矩阵





int


k=0;


//


累计将要删去的边数





for


(


int


i=0;i<


CurrentVertices


;i++)





if< /p>


(


Edge


[v][i]>0&&


Edge


[v][i]<


MaxValue< /p>


)






k++;


//



v






for


(


i nt


i=0;i<


CurrentVertices


;i++)





if< /p>


(


Edge


[i][v]>0&&


Edge


[i][v]<


MaxValue< /p>


)






k++;


//



v






//


覆盖第


v






int


j;




for


(


i nt


i=v+1;i<


CurrentVertices


;i++)





for


(j=0;j<


CurrentVertices


;j++)






Edge


[i-1][j]=


Edge


[i][j];




//


覆盖第


v






for


( j=v+1;j<


CurrentVertices


;j++)





for


(


int


i=0;i<


CurrentVertices


;i++)






Edge


[i][j-1]=


Edge


[i][j];



CurrentVertices


--;


//


修改顶点数





CurrentEdges


-=k;


//


修改边数





return



true


;





}



//


删除一个边




public



boolean


RemoveEdge(


int


v1,


int


v2){




if


(v1<0||v1>


CurrentVertices


-1)





return



false

< p>
;


//


出错





if


(v 2<0||v2>


CurrentVertices


-1)





return



false

< p>
;


//


出错





if


(v1==v2)





return



false


;




Edge


[v1][v2]=


MaxValue


;




return



true


;



}




(三)


、程序中类的设计





Graph


”类










1.


【主要成员变量说明】





static



int



MaxEdges


=50;




static



int



MaxVertices


=10;



static



int



MaxValue


=9999;


//


无穷大




//


存放顶点的数组




private



char



VerticesList


[]=


new



char


[


MaxVertices


];



private



int



CurrentEdges< /p>


;


//


现有边数




private



int



CurrentVertic es


;


//


现有顶点数



//


邻接矩阵(存放两个顶点的权值)



private


int


< p>
Edge


[][]=


new



int


[


MaxVertices


][


MaxVertices


];




2.


【主要成员方法说明】




//


查找指定的顶点序号




public



int


FindVertex(


char


vertex){



}



//


判断图是否为空




public



boolean


IsGraphEmpty(){



}



//


判断图是否满




public



boolean


IsGraphFull(){



}



//


取得顶点数




public



int


NumberOfVertices(){



}



//


取得边数




public



int


NumberOfEdges(){



}



//


按序号取得顶点值




public



char


GetValue(


int


i){



}



//


取得一条边的权值




public



int


GetWeigh(


int


v1,


int


v2){



}



//


取得第一个邻接点的序号




public



int


GetFirstNeighbor(


int


v){



}



//


插入一个顶点




public



int


InsertVertex(


char


vertex){

-


-


-


-


-


-


-


-



本文更新与2021-02-01 21:14,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595103.html

邻接矩阵表示的带权有向图的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文