⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spining_tree.pas

📁 这是数据结构课老师布置的上机作业
💻 PAS
字号:
program spining_tree;

const max=99;

type
adjmatrix=array [1..30,1..30] of byte;
vertex=record
     vex:byte;
     lowcost:byte;
   end;

var
closedge:array [1..30]of vertex;
gn:adjmatrix;
data:text;
name:string[10];
i,j,n,v,k:byte;
judge:char;
out:boolean;

procedure data_file_input;
begin
  write('input filename first ("prim4.txt","prim6.txt" or "prim8.txt"):');
  readln(name);
  assign(data,name);
  reset(data);
  read(data,n);
  writeln;
  writeln(name:13);
  writeln('n=':8,n:2); writeln;
  for i:=1 to n do
    for j:=1 to n do
       read(data,gn[i,j]);
  for i:=1 to n do
     begin
       for j:=1 to n do write(gn[i,j]:3);
     writeln;
     end;
end;

procedure closedge_initiate;
begin
for v:=2 to n do
    with closedge[v] do
      if  not(gn[1,v]=0) then
                           begin
                           vex:=1 ; lowcost:=gn[1,v]
                           end
                         else lowcost:=max;
closedge[1].lowcost:=0;
end;

procedure find_next_vertex;
var min:byte;
   procedure minimum(m:byte);
      begin
         for v:=1 to n do
           with closedge[v] do
                if (lowcost<m) and( lowcost>0) then
                                              begin
                                                m:=lowcost; min:=m;
                                                k:=v;
                                              end;
      end;
begin
     minimum(max);
     writeln;
     write('vertex:':10,'V':3,closedge[k].vex,'-->':4,'V':2,k,'   ','arclength:',min:2);
     closedge[k].lowcost:=0;
     for v:=1 to n do with closedge[v] do
        if (gn[k,v]<lowcost) and (gn[k,v]>0) then
                                                begin
                                                   lowcost:=gn[k,v];
                                                   vex:=k;
                                                end;
     if i=n-1 then
       begin
       write('try again?(y/n):':28);
       readln(judge);
       if judge='n' then out:=true ;
       writeln;  writeln;
       end;
end;

BEGIN
while not out do
  begin
    data_file_input;
    closedge_initiate;
    for i:=1 to n-1 do find_next_vertex;
  end;
END.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -