Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Turbo Pascal] Добавить элемент в конец очереди


Автор: deimond 8.4.2011, 21:28
Помогите с задачкой.

Дано число D и указатели P1 и P2 на начало и конец очереди (если очередь является пустой, то P1 = P2 = nil). Добавить элемент со значением D в конец очереди и вывести новые адреса начала и конца очереди.

Автор: deimond 24.4.2011, 21:19
Помогите, пожалуйста, с реализацией задачи

Автор: v4v4n 25.4.2011, 15:31
если
Код

Type
      TData = integer;
      PElem =^TElem;
      TElem = record
          Data : TData;
          Next, Prev : PElem;
      end;

тогда так:
Код

procedure Add2End(D:TData; var P1,P2:PElem);
var NewElem:PElem;
Begin
      new(NewElem);
      NewElem^.Data:=D; 
      NewElem^.Next:=nil; 
      if P1=nil then begin
            NewElem^.Prev:=nil; 
            P1:=NewElem;
      end
      else begin
            NewElem^.Prev:=P2; 
            P2^.Next:=NewElem;
     end;
     P2:=NewElem;
End;


или я попутал очередь с двусвязным списком?
ну если очередь - односвязный список, то может так 

если
Код

Type
      TData = integer;
      PElem =^TElem;
      TElem = record
          Data : TData;
          Next : PElem;
      end;

тогда так:
Код

procedure Add2End(D:TData; var P1,P2:PElem);
var NewElem:PElem;
Begin
      new(NewElem);
      NewElem^.Data:=D; 
      NewElem^.Next:=nil; 
      if P1=nil then P1:=NewElem else P2^.Next:=NewElem;
      P2:=NewElem;
End;

Автор: deimond 26.4.2011, 08:13
Спасибо большое, а что будет в теле основной программы?

Автор: deimond 5.5.2011, 20:08
Никак не разберусь с кодом основной программы.
Получилась такая ерунда, но не получается вывести очередь с добавленным элементом и вообще запутался с указателями P1 и P2. Как их задавать?
Сделал Add2End функцией, не разобрался как добавить результат выполнения процедуры в конце очереди.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)