![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
click |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здесь программа для создания и обработки линейного списка. Нужно её изменить для обработки стека. А потом - для обработки очереди... Заранее спасибо.
Код 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. |
![]() ![]() |
![]() |
Текстовая версия | 23.06.2025 23:35 |