Консультация № 195007
16.03.2019, 20:29
0.00 руб.
0 4 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Построить двунаправленный неупорядоченный список номеров телефонов: семизначных – абонентов; трехзначных – спецслужб. Просмотреть список справа налево и построить упорядоченный односвязный список, не включая в него номера спецслужб.

Обсуждение

давно
Посетитель
402002
11
16.03.2019, 20:30
общий
забыл, IDE: PascalABC.NET
давно
Старший Модератор
31795
6196
21.03.2019, 13:19
общий
Адресаты:
Вам нужно с помощью указателей или ссылок?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
402002
11
21.03.2019, 19:05
общий
Цитата: Зенченко Константин Николаевич
с помощью указателей)
давно
Старший Модератор
31795
6196
25.03.2019, 17:50
общий
это ответ
Здравствуйте, luxv99!

Смотрите код:
Код:
 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-х значные номера.
Удачи
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа