Chuyển ma trận thành ds liên kết
đây là bài toán chuyển ma trận thành ds với điều kiện bạn phải nhâp mt từ file
đây là bài toán chuyển ma trận thành ds với điều kiện bạn phải nhâp mt từ file
- Code:
program matran;
uses crt;
type
tro=^nut;
nut=record
dinh:integer;
next:tro;
end;
var
b:array[1..100] of nut;
a:array[1..50,1..50] of integer;
c:array[1..50,1..50] of integer;
i,j,n:integer;
p,q,r:tro;
begin
clrscr;
{------------------Nhap ma tran cua do thi--------}
n:=5;
textcolor(white);
writeln('Nhap ma tran:');
for i:=1 to n do
for j:=1 to n do
begin
writeln('a[',i,',',j,']= ');readln(a[i,j]);
end;
writeln('Ma tran vua nhap la:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
writeln;
end;
{---------------------------------------------}
for i:=1 to n do
b[i].dinh:=i;
{---------Chuyen doi ma tran sang danh sach------}
for i:=1 to n do
begin
q:=b[i].next;;
for j:=1 to n do
if a[i,j]<>0 then
begin
new(p);
p^.dinh:=b[j].dinh;
p^.next:=b[i].next;
b[i].next:=p;
end;
end;
writeln('Chuyen doi thanh cong!');
writeln;
writeln;
{-----kiem tra viec chuyen doi--------------}
writeln('Mo hinh cua danh sach');
writeln;
writeln;
for i:=1 to n do
begin
r:=b[i].next;
textcolor(red);write('[',i,']');textcolor(white);
while r<>nil do
begin
textcolor(green); write('->');textcolor(white);
write(r^.dinh:2);
r:=r^.next;
end; textcolor(red);
write('->NIL');textcolor(white);
writeln;
end;
{-------Chuyen tu danh sach sang ma tran:---------}
for i:= 1 to n do
for j:=1 to n do
c[i,j]:=0;
for i:= 1 to n do
begin
q:=b[i].next;
while q<>nil do
begin
c[i,q^.dinh]:=1;
q:=q^.next;
end;
end;
writeln('Ma tran vua Chuyen doi la:');
writeln;
writeln;
for i:=1 to n do
begin
for j:=1 to n do
write(c[i,j]:4);
writeln;
writeln;
end;
readln;
end.