Задан список из n символов. Получить последовательность символов, содер-жащую только последние вхождения каждого символа с сохранением взаимно-го порядка этих вхождений.
вот мое решение:
Код
Type
point1 = ^MyWord1;
MyWord1 = record
ch: char;
next: point1;
end;
point2 = ^MyWord2;
MyWord2 = record
ch: char;
next: point2;
end;
procedure input(var first:point1;var f2:point2);{создаем 2 списка}
var r:point1;r1:point2;
begin
first:= nil; f2:=nil;
while r^.ch <> '.' do
begin
new®;
r^.next:=first;
first:=r;
readln(r^.ch);
new(r1);
r1^.next:=f2;
f2:=r1;
r1^.ch:=' ';{второй список пока заполняем пробелами..}
end;
end;
procedure get_st(f1:point1; var f2:point2);{модифицируем список}
var w,b:boolean;q:point2;q1:point1;
begin
while f1<>nil do
begin
w:=false;b:=true;
while (f2<>nil)and b do
begin
if f2^.ch=f1^.ch then
begin
w:=true;
b:=false;
end
else f2:=f2^.next;
end;
if w=false then begin
f2^.ch:=f1^.ch;
end;
f1:=f1^.next;
end;
end;
var f1:point1;f2:point2;
begin
clrscr;
input(f1,f2);
get_st(f1,f2);
writeln;
write('---> ');
while f2<>nil do
begin
write(f2^.ch,' ');
f2:=f2^.next;
end;
end.
point1 = ^MyWord1;
MyWord1 = record
ch: char;
next: point1;
end;
point2 = ^MyWord2;
MyWord2 = record
ch: char;
next: point2;
end;
procedure input(var first:point1;var f2:point2);{создаем 2 списка}
var r:point1;r1:point2;
begin
first:= nil; f2:=nil;
while r^.ch <> '.' do
begin
new®;
r^.next:=first;
first:=r;
readln(r^.ch);
new(r1);
r1^.next:=f2;
f2:=r1;
r1^.ch:=' ';{второй список пока заполняем пробелами..}
end;
end;
procedure get_st(f1:point1; var f2:point2);{модифицируем список}
var w,b:boolean;q:point2;q1:point1;
begin
while f1<>nil do
begin
w:=false;b:=true;
while (f2<>nil)and b do
begin
if f2^.ch=f1^.ch then
begin
w:=true;
b:=false;
end
else f2:=f2^.next;
end;
if w=false then begin
f2^.ch:=f1^.ch;
end;
f1:=f1^.next;
end;
end;
var f1:point1;f2:point2;
begin
clrscr;
input(f1,f2);
get_st(f1,f2);
writeln;
write('---> ');
while f2<>nil do
begin
write(f2^.ch,' ');
f2:=f2^.next;
end;
end.
Но программа отчего то пробегает по 2 списку только 1 раз!
Помогите, пожалуйста!