Консультация # 195007: Здравствуйте! У меня возникли сложности с таким вопросом: Построить двунаправленный неупорядоченный список номеров телефонов: семизначных – абонентов; трехзначных – спецслужб. Просмотреть список справа налево и построить упорядоченный односвязный список, не включая в него номера спецслужб....
Здравствуйте! У меня возникли сложности с таким вопросом: Построить двунаправленный неупорядоченный список номеров телефонов: семизначных – абонентов; трехзначных – спецслужб. Просмотреть список справа налево и построить упорядоченный односвязный список, не включая в него номера спецслужб.
type
TNumb=string[10];
TPhone=^Phone;
Phone=record
n:tNumb;
r,l:TPhone;
end;
var
head,temp:TPhone;
a:string;
begin
head:=nil;
repeat
a:='';
new(temp);
repeat
write(a,'Enter Phone Number:');
readln(temp^.n);
a:='Error length:';
until length(temp^.n) in[0,3,7];
if length(temp^.n)>0 then
begin
temp^.r:=head;
temp^.l:=nil;
if head<>nil then
head^.l:=temp;
head:=temp;
end;
until length(temp^.n)=0;
dispose(temp);
temp:=head;
if head<>nil then
begin
{show original data}
writeln('All Phone: ');
while temp<>nil do
begin
writeln(temp^.n);
temp:=temp^.r;
end;
{main target}
temp:=head;
while temp<>nil do
begin
if length(temp^.n)=3 then
begin
if temp<>head then
begin
temp^.r^.l:=temp^.l;
temp^.l^.r:=temp^.r;
end
else
head:=head^.r;
dispose(temp);
temp:=head;
end
else temp:=temp^.r;
end;
{show result}
temp:=head;
writeln('Phone with out emergency: ');
while temp<>nil do
begin
writeln(temp^.n);
temp:=temp^.r;
end;
{memory free}
temp:=head;
while head<>nil do
begin
temp:=head;
head:=head^.r;
dispose(temp);
end;
end;
end.
Сильно не тестировал. Одинарный список не создавал, из двойного списка удаляются все 3-х значные номера. Удачи
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!