이 산술 표현식은 E=((c+(a*b))-(c+(d*e)))
입니다. 이 예는 '-'
때문이다
나는 첫 번째 노드를 만들기 위해, 내가 처음 연산자를 찾을 필요가 재귀 함수산술 표현식에서 첫 번째 연산자를 찾는 방법은 무엇입니까?
typedef struct node { char info; struct node*left, *right; } TNode, *Tree;
Tree fBuild (char *E) // recursive function
Tree aux = (Tree)malloc (sizeof(TNode)); //tree in recursive function
첫째로 이진 트리에 넣어하는 최초의 연산자를 찾을 필요가 나는 재귀와 함께 한 후에
-
/ \
/ \
+ +
/ \ /\
c * c *
/\ /\
a b d e
가 어떻게 셀 수 E2=(c+(d*e))
예와 E1=(c+(a*b))
와 aux->left
및 aux->right
을위한 기능 괄호 또는 다른 알고리즘은 C 코드에서 첫 번째 연산자를 찾으려면?
표현식이'a - b - c'이면? 힌트 : 문법을 사용하십시오. – unwind
이것은 X-Y 문제입니다. 문제를 해결하기 위해 빼기를 찾을 필요가 없습니다. 간단한 재귀 적 하향 파서를 작성하면 루트 노드로 자체적으로 나옵니다. – dasblinkenlight
@dasblinkenlight 연산자 우선 순위를 고려한 재귀 적 파생 구문 분석기가 다소 단순하지는 않은 문법으로 인해 연료가 공급된다는 점을 제외하면 True입니다. 다른 파싱 접근법은 훨씬 단순한 "문법"(기본적으로 우선 순위 테이블)을 구현하는 똑같이 간단한 파서를 산출합니다. – delnan