Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.05.2015, 21:38   #1
svetik290895
Пользователь
 
Регистрация: 10.05.2015
Сообщений: 12
Репутация: 10
По умолчанию Двусвязный список...

Создать двусвязный список целых чисел. Нечетные числа выбрать и создать из них односвязный список типа очередь. Удалить их из двусвязного списка. Результаты отображать на экране.....(Не работает процедура del, не знаю как правильно сделать...помогите пожалуйста...остальное все работает)

Код:
Код:
uses crt;
const n=7;
type spisok=^zap;
zap=record
inf:integer;
lev,pr:spisok;
end;
var beg,kon,a,b,c,p,q,t,m:spisok;
i:integer;
Procedure print;
begin
p:=beg^.pr;
while p^.pr<> nil do
begin
write(p^.inf:4);
p:=p^.pr;
end;
end;
Procedure ins_pose;
begin
new(beg);
beg^.inf:=maxint;
a:=beg;
new(kon);
kon^.inf:=-maxint;
beg^.pr:=kon;
kon^.lev:=beg;
kon^.pr:=nil;
for i:=1 to n do
begin
new(c);
c^.inf:=random(10);
c^.pr:=kon;
a^.pr:=c;
c^.lev:=a;
kon^.lev:=c;
a:=c;
end;
end;
Procedure N_O;
begin
new(t);
m:=t;
b:=t;
a:=beg^.pr;
for i:=1 to n do
begin
new(t);
if a^.inf mod 2<>0 then
begin
t^.inf:=a^.inf;
write(t^.inf);
end;
m^.pr:=t;
a:=a^.pr;
end;
end;
Procedure Del;
begin
a:=beg^.pr;
for i:=1 to n do
if a^.inf mod 2<>0 then
begin
new(q);
q:=a;
a^.lev^.pr:=a^.pr;
a^.pr^.lev:=a^.lev;
q^.lev:=nil;
q^.pr:=nil;
dispose(q);
end;
a:=a^.pr;

end;
begin
clrscr;
randomize;
ins_pose;
writeln('dvysvaznii spisok');readln;
Print;
writeln;
writeln('odnosvaz nechetnie');readln;
N_O;writeln;
writeln('ydalenie nechetnih');readln;
Del;writeln;
Print;
end.

Последний раз редактировалось Stilet; 10.05.2015 в 22:03.
svetik290895 вне форума   Ответить с цитированием
Старый 10.05.2015, 22:52   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Цитата:
new(q);
А это зачем в процедуре удаления?
Может стоит сделать отдельно процедуру выборки и отдельно процедуру удаления элементов?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 10.05.2015, 22:59   #3
svetik290895
Пользователь
 
Регистрация: 10.05.2015
Сообщений: 12
Репутация: 10
По умолчанию

А как сделать.... Не могу понять...не получается..
svetik290895 вне форума   Ответить с цитированием
Старый 10.05.2015, 23:20   #4
svetik290895
Пользователь
 
Регистрация: 10.05.2015
Сообщений: 12
Репутация: 10
По умолчанию

процедура "Procedure N_O" итак осуществляет поиск нечетных
...
svetik290895 вне форума   Ответить с цитированием
Старый 11.05.2015, 01:13   #5
ViktorR
Профессионал
 
Регистрация: 23.10.2010
Сообщений: 1,356
Репутация: 644
По умолчанию

Очень рекомендую скачать Т.А. Павловскую (см. список литературы).
http://www.programmersforum.ru/showt...?t=8324&page=9
Там есть почти готовые части кода, разобравшись с которыми Вы поймете немного больше ...

Вместе с тем, безобразное использование переменных очень усложняет жизнь желающим помочь Вам: все переменные объявлены как глобальные.
И все же:
Procedure ins_pose - активирует двухсвязный список (как удалось понять). И что там делают переменные beg, c, a?
Код:
...
new(beg);
...
new(c);
...
a:=c;
А вот в Procedure N_O эти переменные используются вновь:
Код:
...
a:=beg^.pr;
...
Так где у Вас указатель на начало сформированного списка и ... ?

Как-то так, ...
ViktorR вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязный список b0006 C# (си шарп) 1 14.11.2014 19:09
Двусвязный список (C++) Ferodot Помощь студентам 0 22.04.2014 22:14
Двусвязный список Даsha Помощь студентам 3 26.06.2011 11:45
Двусвязный список Work Group Паскаль 12 13.07.2010 01:44
двусвязный список на си++ mizantrop32 Общие вопросы C/C++ 0 18.05.2010 17:45


14:13.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.