Помощь - Поиск - Пользователи - Календарь
Полная версия: Стек, помогите изменить программу...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
click
Здесь программа для создания и обработки линейного списка. Нужно её изменить для обработки стека. А потом - для обработки очереди... Заранее спасибо.
Код

program Project2;
{$APPTYPE CONSOLE}
uses
  Windows;
type   TPtr=^TElem;
          TElem=record
                Inf:integer;
                Next:TPtr;
          end;
Var    Beg: TPtr;    Value: integer;    Rejim: byte;
Procedure Init_list(Var P: TPtr);
Begin P:=nil; end;
Procedure Add_list(Var P: TPtr);
Var PT,TPR,Prev:TPtr; Prizn: byte;
begin
   write('Input Value: ');    read(Value);
   if P=nil then begin    New(TPR);    P:=TPR;
   TPR^.Inf:=Value;    TPR^.Next:=nil;
   write('First element of list is created - ',Value);
   end
   else begin PT:=P; PREV:=nil; Prizn:=0;
   while PT<>nil do
   begin  if Value<PT^.Inf then begin
              if PREV=nil then begin
             New(TPR);    P:=TPR;    TPR^.Inf:=Value;
             TPR^.Next:=PT;  
             write('Element ',Value,' added before first element');   end

             else begin
             New(TPR);    PREV^.Next:=TPR;    TPR^.Inf:=Value;
             TPR^.Next:=PT;  
             Write('Element ',Value, ' is added between two other elements ');
   end;
   Prizn:=1; break;  
   end;
PREV:=PT; PT:=PT^.Next;
  end;
  if Prizn=0 then begin
   New(TPR); TPR^.Inf:=Value;
   TPR^.Next:=nil;    PREV^.Next:=TPR;
   write('Element ',Value, ' is added after last element');
                     end;   end;
                     end;

Procedure Del_Elem(Var P: TPtr);
Var
PT,TPR,Prev:TPtr; Prizn: byte;
begin
   if P=nil then write('list is empty!!!')
   else begin    write('Input value: ');    read(Value);
   PT:=P; PREV:=nil; Prizn:=0;
   while PT<>nil do  begin
   writeln(PT^.Inf);
if Value=PT^.Inf then begin
     if PREV<>nil then begin
    PREV^.Next:=PT^.Next;    Prizn:=1;
    write('Element is deleted '); break;
                       end
    else begin         P:=PT^.Next;   Prizn:=1;
    write('Element is deleted '); break;
         end;
         Dispose(PT);
                       end;
  PREV:=PT;  PT:=PT^.Next;
end;
if Prizn=0 then write('Element is not founded ' );
end;
end;

Procedure Display_list(P: TPtr);
Var
PT:TPtr; i: byte;
begin
i:=0; PT:=P;
if P=nil then begin write('list is empty!!!'); exit; end;
Writeln;  write(' List =[');
while PT<>nil do
begin  i:=i+1;
write(PT^.Inf,' ');  PT:=PT^.Next;
end;
write(']');  write(' Number of elements = ',i);
end;

begin
while True do
begin
writeln;
write('0 -- Exit; ');  write('1 -- Create; ');  write('2 -- Display; ');  
write('3 -- Add; ');  writeln('4 -- Delete; ');  writeln('Input option (0 -- 4)');
readln(Rejim);
case(Rejim) of
  0: begin readln; exit; end;
  1: Init_list(Beg);
  2: Display_list(Beg);
  3: Add_list(Beg);
  4: Del_Elem(Beg)
  else write('Error!!! ')
  end;   end;   end.


volvo
Правда? А может, проще было бы дать задание? Ты думаешь, в этом есть охота разбираться? Программа совершенно нечитаема...

Кроме того, в FAQ и Поиске можно найти десятки программ для обраьотки стеков, очередей и списков. И задавая здесь этот вопрос, ты проявляешь элементарное неуважение к людям, которыми это было написано...

Ссылки - у меня в подписи...
click
Цитата(volvo @ 7.01.2006 17:29) *

Правда? А может, проще было бы дать задание? Ты думаешь, в этом есть охота разбираться? Программа совершенно нечитаема...

Кроме того, в FAQ и Поиске можно найти десятки программ для обраьотки стеков, очередей и списков. И задавая здесь этот вопрос, ты проявляешь элементарное неуважение к людям, которыми это было написано...

Ссылки - у меня в подписи...




задание: Составить программу создания и обработки стека.
а FAQ уже смотрел
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.