필자는 Prolog에서 stac을 구현해야하지만 목록을 사용하지 않아야합니다. 스택의 각 요소는 before 요소를 가리켜 야합니다.
가능합니까? 런타임 프로그램에서 규칙을 정의 할 수 있습니까? (같은 :?. foo는이 요소의 끝 줄의 함량이 element('foo','bar').
이 다른 포인터를 스택PROLOG - 스택 구현 방법은 무엇입니까?
0
A
답변
1
포인터 난 당신이 정의가 혼합 생각 나는 당신이 연결된 목록을 의미 생각
링크 된 목록은 데이터입니다. 하나 개의 요소는 매우 유연 증가 및 데이터의 수축의 결과, 다음의 요소를 가리키는 구조.
스택
. 제 아웃 마지막 이용하는 데이터 구조이며, 네 스택리스트없이 기록 될 수 있으며, 그래서 링크리스트 가능, 배열리스트는 링크리스트로서 다용도는 아니지만 적은, 그것은 대부분의 연결 목록 기능을 가지고 있습니다.
2
그래서 무엇이 문제입니까? 귀하의 질문은 이미 답변입니다. 'bar'
에는 element(X,Y)
또는 어떤 종류의 bottom
이 포함되어야합니다.
stack_empty(bottom).
stack_push(S, X, element(X, S)).
revlist_push(S0, [], S0).
revlist_push(S0, [X|T], S):-
stack_push(S0, X, S1),
revlist_push(S1, T, S).
revlist_pop(S0, []):- stack_empty(S0). % bottom of stack
revlist_pop(S0, [X|T]):-
stack_push(S1, X, S0), % pop - is reverse push
revlist_pop(S1, T).
revlist(L0, L):-
stack_empty(S0),
revlist_push(S0, L0, S),
revlist_pop(S, L).
사실은 일반적으로 재귀 적 데이터로 표현 프롤로그처럼 같은 언어로 나열되어 있습니다. cons(a, cons(b, cons(c, nil)))
또는 간단히 [a | [b | [c | [] ]]]
입니다.
관련 문제
- 1. MVC : 사용자 메시지 스택 구현
- 2. C++ 스택 구현
- 3. C 스택 배열 구현
- 4. RTSP 스택 구현
- 5. 이상한 스택 구현 오류
- 6. 블루투스 프로토콜 스택 구현
- 7. C++에서 스택 구현
- 8. 링크 된 목록으로 스택 구현
- 9. GLES의 glPushAttrib/glPopAttrib 스택 구현
- 10. 이해 스택 구현 문제 설명
- 11. 이 스택 구현 관련 문제
- 12. Prolog - 산술 절 선언
- 13. 스택 기록을 삭제하는 방법은 무엇입니까?
- 14. Prolog : iteration
- 15. 스택 크기를 모니터링하여 스택 오버플로를 방지하는 방법은 무엇입니까?
- 16. Prolog : 사용하기 전에 변수가 초기화되었는지 확인하는 방법은 무엇입니까?
- 17. Java UI를 JPL Prolog 응용 프로그램에 연결하는 방법은 무엇입니까?
- 18. 모달과 같은 스택 오버플로 플래그 구현
- 19. C++ 스택 구현 (올바르게 작동하지 않음)
- 20. Java에서 Prolog를 사용하는 방법은 무엇입니까?
- 21. 창 속성 - 구현 방법은 무엇입니까?
- 22. Loki의 Pimpl 구현 방법은 무엇입니까?
- 23. Struts2 Tiles - 구현 방법은 무엇입니까?
- 24. log4j를 구현/사용하는 방법은 무엇입니까?
- 25. Dozer BeanFactory : 구현 방법은 무엇입니까?
- 26. Linux 용 Prolog IDE 란 무엇입니까?
- 27. 이 Prolog 술어가 통합되지 않는 이유는 무엇입니까?
- 28. Prolog에서 DPLL 알고리즘 구현
- 29. Prolog : 재귀 함수 재정의
- 30. Prolog 상수 문자열 목록
...하지만 스택에서 요소는 다른 요소에 대한 포인터도 가져야합니다! 나는 연결리스트 http://en.wikipedia.org/wiki/Stack_(data_structure)#Implementation – Rick
로 스택을 의미하므로 그 다음 인덱스는 다음 요소가 그래서, 그것은 문제가되지 않습니다 할 경우 배열에 스택은 무의미 . 그리고 자연의 배열은 배열 형식입니다. 스택에 포인터가 있으면 무의미합니다. 하지만 당신은 정말 다음 요소에 대한 포인터를 가지고 스택을 할 경우의 효율성이 의심하지만, 당신이, 그래 그것을 할 수 있습니다. 방법은 여러 가지가 그것을 할 수 있습니다,하지만 난이 mathmatical 사람이야 이후, 나는 요소와 다음 인덱스 또는 다음 요소에 대한 포인터로 짝수 인덱스로 홀수있을 것입니다. 또는 iterator를 사용하여 완전히 새로운 객체를 만들 수 있습니다. – Anatoli
"자연의 스택은 배열 형식입니다." 누가 그래? 단독 링크 된 목록은 스택처럼 완벽하게 작동합니다. – sepp2k