empty_stack([]).
stack([],[],[]).
stack(Top,Stack,[Top|Stack]).
push_stack(Top,Stack,Newstack):-stack(Top,Stack,Newstack).
pop_stack(Top,Tail,Stack):-stack(Top,Tail,Stack).
pick_stack(Top,Stack):-stack(Top,_,Stack).
member_stack(Element,Stack):-member(Element,Stack).
valid([],New,Result):-!.
valid([Head|Tail],Old,Result):-empty_stack(Old),fail.
valid([Head|Tail],Old,Result):-push_stack(Head,Old,Result),write(Result),valid(Tail,Result,Y).
post2pre([],[]).
post2pre(Expression,Result):-
valid(Expression,Old,Result).
如果输入?-post2pre([1,2,3],Result)
这是本人的程序,返回的Result=[1]。可是我在valid(Tail,Result,Y)后面加入write(Result)。却是可以显示Result是[3,2,1]
纠结了一天了,不知道哪里出错了。
因为要求是需要直接将[1,2,3]顺次出栈压入Result中。求各位大神帮忙看看
stack([],[],[]).
stack(Top,Stack,[Top|Stack]).
push_stack(Top,Stack,Newstack):-stack(Top,Stack,Newstack).
pop_stack(Top,Tail,Stack):-stack(Top,Tail,Stack).
pick_stack(Top,Stack):-stack(Top,_,Stack).
member_stack(Element,Stack):-member(Element,Stack).
valid([],New,Result):-!.
valid([Head|Tail],Old,Result):-empty_stack(Old),fail.
valid([Head|Tail],Old,Result):-push_stack(Head,Old,Result),write(Result),valid(Tail,Result,Y).
post2pre([],[]).
post2pre(Expression,Result):-
valid(Expression,Old,Result).
如果输入?-post2pre([1,2,3],Result)
这是本人的程序,返回的Result=[1]。可是我在valid(Tail,Result,Y)后面加入write(Result)。却是可以显示Result是[3,2,1]
纠结了一天了,不知道哪里出错了。
因为要求是需要直接将[1,2,3]顺次出栈压入Result中。求各位大神帮忙看看