IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Стек, помогите изменить программу..., Здесь программа для создания и обработки линейного списка. Нужно её и
click
сообщение 7.01.2006 17:21
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Здесь программа для создания и обработки линейного списка. Нужно её изменить для обработки стека. А потом - для обработки очереди... Заранее спасибо.
Код

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.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 23.06.2025 23:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"