数据结构实验指导书(4)

2019-03-28 09:10

edgenode=RECORD

adjvex:1..vtxnum; next:edgeptr; END; vexnode=RECORD data:elemtp; link:edgeptr; END;

adjlist=ARRAY[1..vtxnum] OF vexnode;

PROCEDURE create(VAR ga:graph); {用邻接矩阵建立无向无权图} VAR

n,e:integer; i,j,k:integer; BEGIN

n:=vtxnum;

write('input value:'); FOR i:=1 TO n DO read(ga.vexs[i].data); {输入n个顶点的信息} FOR i:=1 TO n DO

FOR j:=1 TO n DO ga.arcs[i,j].adj:=0;

write('Please input the sum of arcs:'); read(e);

FOR k:=1 TO e DO

BEGIN

writeln('input two vertexs:');

read(i,j); {输入一条无向无权的边的两个顶点的序号}

ga.arcs[i,j].adj:=1; ga.arcs[j,i].adj:=1 END;

FOR i:=1 TO n DO write(ga.vexs[i].data,' '); writeln('');

16

FOR i:=1 TO n DO BEGIN

FOR j:=1 TO n DO write(ga.arcs[i,j].adj,' '); writeln(''); END;

END;

{优先深度算法遍历图,邻接矩阵}

PROCEDURE dfsmatrix(ga:graph;VAR visited:bool;i,n:integer); VAR j:integer; BEGIN

write(i,' ');

write(ga.vexs[i].data,'; '); visited[i]:=true;

FOR j:=1 TO n DO BEGIN

IF ((j<>i) AND (ga.arcs[i,j].adj<>0) AND (visited[j]<>true)) THEN dfsmatrix(ga,visited,j,n); END; END;

{初始化邻接表}

PROCEDURE initgadjoin(VAR ga:adjlist;n:integer); VAR j:integer; BEGIN

FOR j:=1 TO n DO BEGIN

ga[j].link:=NIL; write('input value:'); read(ga[j].data);

17

END; FOR j:=1 TO n DO BEGIN

writeln(ga[j].data); END; END;

PROCEDURE createadjoin(VAR ga:adjlist;n:integer); {用邻接矩阵建立无向无权图} VAR e:integer; i,j,k:integer; p,q:edgeptr; BEGIN

write('Please input the num of edges:'); read(e);

FOR k:=1 TO e DO

BEGIN

writeln('input two vertexs:');

read(i,j); {输入一条无向无权的边的两个顶点的序号}

{向序号为i的单链表的表头插入一个边结点} new(p); p^.adjvex:=j; p^.next:=ga[i].link; ga[i].link:=p;

{向序号为j的单链表的表头插入一个边结点} new(q); q^.adjvex:=i; q^.next:=ga[j].link;

18

ga[j].link:=q; END; END;

{优先深度算法遍历图,邻接表}

PROCEDURE dfsadjoin(ga:adjlist;VAR visited:bool;i,n:integer); VAR j:integer; p:edgeptr; BEGIN write(i,' '); write(ga[i].data,'; '); visited[i]:=true;

p:=ga[i].link;

WHILE p<>NIL DO BEGIN

j:=p^.adjvex; IF (visited[j]<>true)

THEN dfsadjoin(ga,visited,j,n); p:=p^.next; END; END; VAR

myga:graph; myvisited:bool; i:integer; gl:adjlist;

19

BEGIN

create(myga); {用邻接矩阵建立无向无权图} {邻接矩阵,优先深度算法遍历图} FOR i:=1 TO vtxnum DO myvisited[i]:=false; dfsmatrix(myga,myvisited,1,vtxnum); {用邻接表建立无向无权图} initgadjoin(gl,vtxnum);

IF gl[1].link=NIL THEN write('null') ELSE write('not null'); createadjoin(gl,vtxnum);

{邻接表,优先深度算法遍历图}

FOR i:=1 TO vtxnum DO myvisited[i]:=false; dfsadjoin(gl,myvisited,1,vtxnum); END.

20


数据结构实验指导书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018中考历史模拟试卷附答案选择题专项训练

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: