Условие задачи:
Пусть задан список слов из каждой группы слов оставить только одно.
Я написал код, но программа не работет. Пожалуйста проверьте и объясните, что не правильно.
program XXX;
uses
SysUtils,
windows;
type
tinfo = string;
plist = ^tlist;
tlist = record
info: tinfo;
next: plist;
end;
procedure PrintList(L: plist);
var
p: plist;
begin
p := L;
while p<>nil do
begin
write (p^.info, ' ');
p := p^.next;
end;
writeln;
end;
procedure InitList (var L: plist);
begin
L := nil;
end;
procedure DisposeList (var L: plist);
var
d: plist;
begin
while L<>nil do
begin
d := L;
L := L^.next;
dispose (d);
end;
end;
function IsEmpty(L: plist): boolean;
begin
IsEmpty := L = nil;
end;
procedure AddToEndOfList (var L: plist; info: tinfo);
var
p,p_pred: plist;
q: plist;
begin
if IsEmpty (L) then
begin
new (q);
q^.next := nil;
q^.info := info;
L := q;
end
else
begin
p := L;
while p<>nil do
begin
p_pred := p;
p := p^.next;
end;
new (q);
p_pred^.next := q;
q^.next := nil;
q^.info := info;
end;
end;
procedure ReadList(var L: plist);
var
info: tinfo;
begin
InitList (L);
while not eoln do
begin
read (info);
AddToEndOfList (L, info);
end;
readln;
end;
//вот здесь начинаются проблемы
procedure MakeNewList(var L: plist; L1: plist);
var
p, h: plist;
info: tinfo;
begin
InitList (L);
p := L1;
while p<>nil do
begin
info := p^.info;
h:=p^.next;
if (p^.info<>h^.info) and (p<>nil) then
AddToEndOfList (L, info);
p := p^.next;
end;
end;
var
L,
L1: plist;
begin
SetConsoleCp (1251);
SetConsoleOutputCp (1251);
writeln ('Введите список');
ReadList (L1);
readln;
MakeNewList (L,L1);
writeln ('Новый список ');
PrintList (L);
readln;
DisposeList (L);
DisposeList (L1);
end.
Непонятно условие.
Если дан список, то при чем здесь группы?
Или я неправильно восстановил пропущенные знаки препинания?
Сорри! Уже голова не варит.
Правильное условие:
Пусть задан список слов из каждой группы подряд идущих одинаковых слов оставить только одно.
Пожалуйста то же самое, только со знаками препинания.
Пусть дан список слов. Из каждой группы подряд идущих одинаковых слов оставить только одно.
Че не понятно-то?
Если есть подряд идущие элементы с одинаковыми значениями, то удалить все эти элементы, оставив тока один с данным значением и так сотворить с элементами всего списка.
To adriano.
Добавлено через 1 мин.
Вася, я правильно понял? )
Ну да всё так.
Посмотри вот это: http://forum.pascal.net.ru/index.php?showtopic=2706&pid=23570&mode=threaded&show=&st=0?entry23570
Может полезное что-нибудь найдешь.