файл исходных данных содержит:
D9 372
A7 8633 8634
H5 4107 4108
E6 1525
список имеет вид:
собственно, мне не понятно как такой список сформировать..
натолкните, пожалуйста на мысль..
Эскизы прикрепленных изображений
Попробуй поиск по слову "мультисписок"... Я как-то выкладывал нечто подобное.
uses crt;
type
plist = ^tlist;
tlist = record
col_num, value: integer;
next: plist;
end;
pvector = ^tvector;
tvector = record
row_num: integer;
next: pvector;
end;
var
f: text;
pl, pl_first, pl_last: plist;
pv, pv_first, pv_last: pvector;
i, j, X: integer;
begin
clrscr;
assign(f, '---.txt');
reset(f);
pv_first := nil; pv_last := nil;
i := 1;
while not seekeof(f) do begin
j := 1; pl_first := nil; pl_last := nil;
while not seekeoln(f) do begin
read(f, X);
if X <> 0 then begin
new(pl);
pl^.value := x;
pl^.col_num := j;
pl^.next := nil;
if pl_first = nil then pl_first := pl
else pl_last^.next := pl;
pl_last := pl;
inc(j);
end;
end;
readln(f);
if pl_first <> nil then begin
new(pv);
pv^.row_num := i;
pv^.next := nil;
if pv_first = nil then pv_first := pv
else pv_last^.next := pv;
pv_last := pv;
end;
inc(i);
end;
close(f);
pl := pl_first; pv := pv_first;
while pv <> nil do begin
while pl <> nil do begin
write (pl^.value);
pl := pl^.next; {собственно, добавил только этот кусок}
end;
writeln;
pv := pv^.next;
end;
readkey;
end.
Я ж написал, что это - только набросок... Вот так работает:
{ немного меняем тип TVector ... }
pvector = ^tvector;
tvector = record
row_num: integer;
child: plist;
next: pvector;
end;
{ ... и саму программу: }
...
{ до этого - все правильно }
if pl_first <> nil then begin
new(pv);
pv^.row_num := i;
pv^.next := nil;
if pv_first = nil then pv_first := pv
else pv_last^.next := pv;
pv_last := pv;
pv_last^.child := pl_first; { <--- Вот этого не хватало !!! }
end;
inc(i);
end;
close(f);
{ Ну, и печать, естественно тоже корректируем: }
pv := pv_first;
while pv <> nil do begin
pl := pv^.child;
while pl <> nil do begin
write (pl^.value:5);
pl := pl^.next;
end;
writeln;
pv := pv^.next;
end;
...
т.е. ты добавил указатель на следующую строку?
child: plist;
Я добавил указатель на дочерний список.