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


Автор: ovaaal 30.3.2012, 00:23
В общем начал только-только разбираться со стеками, очередями и т.п.
Смысл, то понятен, но вот реализация (т.к. я только начинаю) хромает, да что уж говорить - ползает на четвереньках :(.
Вот нужно выполнить такую вот довольно-таки легкую (увы пока не для меня) задачу:
"Реализовать операции работы со стеком, построенным на основе динамических структур. Распечатать символы введенной пользовательской строки в обратном порядке."
Начал я пытаться реализовать все это дело (только начало, можно сказать, что практически ничего и не сделал-то я :(), но смысл улавливаю (возможно по-своему), но все же...
Код
program stack_dm;
uses crt;
type
    nodeptr=^nodetype; 
    nodetype=record
        number:char;
        nextnode:nodeptr;
    end;
var stack:nodeptr;
    invalue:char;
   l:string;
    i:byte;
    k:integer;
procedure push(var st:nodeptr; value:char); 
var
    p:nodeptr;



begin
new(p);
p^.number:=value;
p^.nextnode:=st;
st:=p;
end;
procedure write_stack(stack:nodeptr);
var
p:nodeptr;
begin
p:=stack;
while p<>nil do
begin
write(p^.number:3);
p:=p^.nextnode;
end;
end;

begin
clrscr;
stack^.nextnode:=nil;
writeln('vvedite stek');
read(l);
k:=length(l);
for i:=1 to k do

begin
     push(stack,l[i]);
end;
write_stack(stack);
readkey;
end.

Как видно из кода - решил я все это делать "поэлементно", т.е. не строку целиком, а символы по отдельности заносить/выносить в стек, как-то так...
Прошу помощи :rolleyes:

Автор: t_gran 30.3.2012, 04:30
ovaaal, ваш код нормальный. Всё верно, за исключением строчки 40. Должно быть:
Код

   // line 39
   stack := nil;


Старайтесь, на будущее, форматировать код

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