Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2012, 20:36   #1
Vadim0494
Новичок
Джуниор
 
Регистрация: 23.05.2012
Сообщений: 2
По умолчанию Двусвязные списки.

Прошу помочь в исправлении кода. Нужно просто изменить так, чтобы вносить элементы в конец списка. Т.е. я ввожу 1,2,3,4,5,6 оно так и выводило, а не наоборот. Вообще не понимаю эту тему, менял уже все в программе но даже с большим кол-вом изменений у меня либо вообще перестает выводить ответ либо ничего не меняется. Пожалуйста помогите глупому только без процедур.
PHP код:
program laba5;
const 
n=10;
type ptt=^node;
node=record
inf
:integer;
next:ptt;
prev:ptt;
end;
var 
i:byte;p,q,pk:ptt;ch:char;
a,k,sum:integer;
begin
new(p);
P^.inf:=1;
p^.next:=PK^.next;
pk^.next^.prev:=P;
pk^.next:=p;
p^.prev:=pk;
for 
i:=2 to n do
begin
new (p);
writeln ('Vvod ',i,' elementa=');
readln(p^.inf);
p^.next:=q^.next;
q^.next:=p;
end;
while 
P<>nil do
begin
write
(' ',P^.inf);
P:=P^.next;
end;
 
readln;
end
Vadim0494 вне форума Ответить с цитированием
Старый 24.05.2012, 16:33   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
var i:byte;p,q,first:ptt;
begin 
  p:=nil;
  q:=nil;
  first:=nil;
  for i:=1 to n do 
  begin 
    q:=p;//запоминаем предыдущий элемент
    new (p); //создаём новый
    if first=nil then first:=p;//если первого элемента списка ещё нет, то этот элемент становится первым
    write ('Vvod ',i,' elementa='); 
    readln(p^.inf); 
    p^.next:=nil; //следующего элемента пока нет
    p^.prev:=q;//устанавливаем связь текущего элемента с предыдущим
    if q<>nil then q^.next:=p;//устанавливаем связь предыдущего элемента с текущим (если предыдущий элемент существует)
  end; 
  p:=first;//переходим на начало списка
  while P<>nil do 
  begin 
    write(' ',P^.inf); 
    P:=P^.next; 
  end;   
  readln; 
end.
eoln вне форума Ответить с цитированием
Старый 24.05.2012, 17:01   #3
Vadim0494
Новичок
Джуниор
 
Регистрация: 23.05.2012
Сообщений: 2
По умолчанию

Огромное спасибо .
Vadim0494 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязные списки vlados007 Общие вопросы C/C++ 5 13.02.2012 18:12
Двусвязные списки Evacuator C++ Builder 0 29.05.2011 13:12
Двусвязные списки aidar9012 Помощь студентам 6 28.06.2010 02:05
Двусвязные списки vimeo Общие вопросы C/C++ 2 03.05.2010 19:31
Двусвязные списки Serp Помощь студентам 3 14.04.2009 16:13