Type spisok=^TypSpisok; { Это наш список}
TypSpisok=Record { состоит из номера элемента и значения, строкой}
nam:integer; kod:string; metk:spisok
end;
var
elem,beg:spisok;
counter,lim:integer;
{ фунцкция переводящая из 10чной в любую другую }
{ на выходе получаем строку}
function FromTenTo(n, ss:longint):string;
const
Mas: string[16]='0123456789ABCDEF'; { массив для 16ричн. }
{зн7ачений }
var
s: String;
begin
s:='';
repeat
s:=Mas[(n mod ss)+1]+s;
n:=n div ss;
until n=0;
FromTenTo:=s;
end;
BEGIN
New(elem); { выделили память}
beg:=elem; { сохраняем адрес начала цепочки}
elem^.metk:=elem;
WriteLn(' VVedite predel spiska!');
ReadLn(lim);
counter:=0;
While elem^.metk<>nil do
begin
elem^.nam:=counter;
elem^.kod:=FromTenTo(counter,2);
counter:=counter+1;
if counter=lim then elem^.metk:=Nil;
{ при достижении конечного предела в метку пишем, о том,}
{что список закончился}
end;
WriteLn(' Vivod'); { тестовый вывод }
repeat
WriteLn (elem^.nam,' ', elem^.kod);
elem:=elem^.metk;
until elem=nil;
ReadLn(); { остановка}
End.
Pascal. Динамические структуры. Связанный список.
Задача - создать связанный список содержащий номер элемента и его представление в двоичной системе счисления.
Код:
[COLOR=red][COLOR=black][COLOR=red]New(elem);[/COLOR] { выделили память}[/COLOR] [/COLOR][COLOR=red]{1}[/COLOR]
beg:=elem; { сохраняем адрес начала цепочки}
elem^.metk:=elem;
WriteLn(' VVedite predel spiska!');
ReadLn(lim);
counter:=0;
[COLOR=blue]While elem^.metk<>nil do[/COLOR]
[COLOR=blue] begin[/COLOR]
[COLOR=blue] elem^.nam:=counter;[/COLOR]
[COLOR=blue] elem^.kod:=FromTenTo(counter,2);[/COLOR]
[COLOR=blue] counter:=counter+1;[/COLOR]
[COLOR=blue] if counter=lim then elem^.metk:=Nil; [/COLOR]
[COLOR=blue]{ при достижении конечного предела в метку пишем, о том,} [/COLOR]
[COLOR=blue]{что список закончился} [/COLOR]
[COLOR=blue] end;[/COLOR]
beg:=elem; { сохраняем адрес начала цепочки}
elem^.metk:=elem;
WriteLn(' VVedite predel spiska!');
ReadLn(lim);
counter:=0;
[COLOR=blue]While elem^.metk<>nil do[/COLOR]
[COLOR=blue] begin[/COLOR]
[COLOR=blue] elem^.nam:=counter;[/COLOR]
[COLOR=blue] elem^.kod:=FromTenTo(counter,2);[/COLOR]
[COLOR=blue] counter:=counter+1;[/COLOR]
[COLOR=blue] if counter=lim then elem^.metk:=Nil; [/COLOR]
[COLOR=blue]{ при достижении конечного предела в метку пишем, о том,} [/COLOR]
[COLOR=blue]{что список закончился} [/COLOR]
[COLOR=blue] end;[/COLOR]
[COLOR=#ff0000]{1} [/COLOR][COLOR=black]под какое количество элементов ты выделяешь память? разве не под один узел? [/COLOR]
[COLOR=blue]{2} [/COLOR][COLOR=black]где ты двигаешься по списку? у меня создается впечатление, что ты выделяешь память под один узел и постоянно записываешь в него новые данные. выводит lim-1?[/COLOR]