20.04.2011, 11:52 | #1 (permalink) |
Новичок
Регистрация: 20.04.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Стек в Turbo Pascal
Дан указатель P1 на вершину стека (если стек пуст, то P1=NIL). Извлеч из стека все элементы и вывести их значения. Вывести также количество известных элементов N (для пустого стека вывести 0). после извлечения элементов из стека освобождать память которую они занимали. Вот есть код Код:
uses crt; type PSTRC=^Strc; Strc=record inf:integer; ptr:Pstrc; end; var S1,s2:PSTRC; i,k,g,p:integer; err:boolean; a:array [1..20] of integer; Procedure Dop(var S:Pstrc;dat:integer); var nov:Pstrc; begin New(nov); nov^.inf:=dat; nov^.Ptr:=s; S:=nov; end; Function Ud(var S:Pstrc; var err:boolean):integer; var old:Pstrc; begin if s<>Nil then begin old:=S; S:=S^.ptr; Ud:=old^.inf; dispose(old); err:=false end else begin Ud:=0; err:=true end end; Function Cht(s:PSTRC; var err:boolean):integer; begin if s<>Nil then begin write('inf=',s^.inf:3); err:=false; Cht:=s^.inf; end else begin writeln('stack pust'); err:=True; cht:=0; end; end; BEGIN clrscr; i:=1; k:=1; while k<>0 do begin readln(k); Dop(s1,k); end; while s1<>Nil do begin a[i]:=Ud(s1,err); inc(i); end; for k:=i downto 1 do dop(s2,a[k]); for k:=1 to i do writeln(ud(s2,err)); readln; END. Не могли бы вы проверить правильность его работы, а то почему то в конце при любом раскладе 0 выводится. |
20.04.2011, 11:52 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Рекомендую набраться информации из похожих топиков Turbo Pascal 8, дано натуральное число n Cтек, Turbo Pascal Turbo Pascal. Оператор CASE Синтаксический анализатор. Turbo Pascal |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|