2016-10-17 1 views
-4

Google에서 너무 많은 알고리즘을 찾았지만, 중위어를 후행으로 변환하는 실행 가능한 알고리즘을 찾을 수 없습니다. C#에서 접미사 방정식에 중위 방정식을 변환하는 방법? 제발 도와주세요 ...중위 방정식을 C#의 접미사 방정식으로 변환하는 방법?

+0

이 게시물을보십시오 http://stackoverflow.com/questions/1438030/infix-to-postfix-converter 또는 this one http://www.codeproject.com/Tips/370486/Converting-InFix-to -PostFix-using-Csharp-VB-NET – Mulflar

답변

0

이것은 프로그램 학습을위한 훌륭한 작은 프로젝트입니다. 두 부분으로 나뉩니다. 코드를 트리로 구문 분석 한 다음 트리를 포스트 픽스로 인쇄합니다. 각 트리 노드는 루트 노드로 4 + (5/6)+이고 하위 노드가 4와 5/6 인 두 명의 하위 연산자가 있습니다. 5/6 노드를 자세히 살펴보면 부모가 /이고 자식이 56 인 두 명의 하위 노드가있는 상위 노드를 찾을 수 있습니다.

구문 분석은 가장 어려운 부분입니다. 표현식을 파싱하려면 구문 분석하고 연산자를 찾고 연산자의 왼쪽과 오른쪽에 무엇이 필요한지주의하십시오. 연산자는 노드이고 두 개의 자식 즉 Parse(stuff to the left)Parse(stuff to the right)이 있습니다. 빼기 (단항 연산자이므로 엄격하게 중점을 두지 않음)에주의를 기울여야합니다. 마이너스를 특별한 경우로 취급하는 것이 좋습니다. -4은 한 개의 자식이 아닌 -4으로 구문 분석되어야합니다. 방정식을 파싱 할 때 모든 내부 노드는 연산자이어야하고 모든 리프 노드는 숫자가되어야합니다.

구문 분석 한 후에 인쇄하십시오. 루트 노드의 경우 print(node)은 "(", 왼쪽 자식 (재귀 적으로 인쇄), 오른쪽 자식 (재귀 적으로 인쇄), 연산자를 누른 다음 ")"을 사용하여 식 (노드)을 닫습니다.

알고리즘에 대한 링크가 필요하지 않지만 직접 구현하는 경우 실제로는 훨씬 더 커질 것입니다.

관련 문제