Тема: двонаправлений список
Добрий вечір.
Умова задачі: сформувати двонаправлений список із ланкою заголовком. Вставити перед кожною літерою "А" літеру "D".
Допоможіть знайти помилку, тому що після запуску програми вибиває помилку: "попитка разименовать нулевой указатель".
program lab13;
type
zv2 = ^point2;
point2 = record
elem: char;
next: zv2;
priv: zv2
end;
var
vlan, vslov: zv2;
sym: char;
procedure vstav(lanka: zv2; buk: char);
var
q: zv2;
begin
new(q);
q^.elem := buk;
q^.next := lanka^.next;
q^.priv := lanka^.next^.priv;
lanka^.next^.priv := q;
lanka^.next := q
end;
begin
writeln('vv symbols ');
new(vslov);
vslov^.next := vslov;
vslov^.priv := vslov;
repeat
read(sym);
vstav(vlan^.priv, sym);
until sym = '.';
vlan := vslov^.next;
while vlan <> vslov do
begin
vlan := vslov;
if vlan^.elem = 'A' then
vstav(vlan^.priv, 'D');
vlan := vlan^.next;
end;
writeln('result');
vlan := vlan^.next;
writeln;
while vlan <> vslov do
begin
write(vlan^.elem);
vlan := vlan^.next
end;
writeln;
end.