Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어에서 스택 표현식의 변환 설명

<시간/>

스택은 데이터가 한쪽 끝에서만 삽입 및 제거되는 선형 데이터 구조입니다.

알고리즘

다음은 푸시( )에 대한 알고리즘입니다. -

  • 스택 오버플로를 확인합니다.
if (top = = n-1)
printf("stack over flow");
  • 그렇지 않으면 스택에 요소를 삽입하세요.
top ++
a[top] = item

다음은 팝( )에 대한 알고리즘입니다. -

  • 스택 언더플로를 확인합니다.
if (top = = -1)
printf("stack under flow");

그렇지 않으면 스택에서 요소를 삭제합니다.

item = a[top]
top --

다음은 Display( ) −

에 대한 알고리즘입니다.
if (top == -1)
printf ("stack is empty");

그렇지 않으면 아래 언급된 알고리즘을 따르십시오.

for (i=0; i<top; i++)
printf ("%d", a[i]);

스택 적용

C 언어에서 스택 표현식의 변환을 이해합시다.

표현 − 피연산자와 연산의 법적 조합입니다.

표현 유형

변환 및 평가를 수행할 수 있는 C 언어에는 세 가지 유형의 표현식이 있습니다. 아래에 설명되어 있습니다 -

  • 중위 표현식 - 연산자는 피연산자 사이에 있습니다. 예를 들어, A+B

  • 접두사 표현식 - 연산자는 피연산자 앞에 있습니다. 예:+AB

  • 접미사 식 - 연산자는 피연산자 뒤에 있습니다. 예:AB+

infix를 postfix로, infix를 prefix로 변환하는 방법은 아래에 설명되어 있습니다. -

Infix to postfix    Infix to prefix
A+ B*C               A+ B*C
A+ BC *              A+ *BC
ABC* +               +A*BC

예:

A+B*C / D-E+F 중위를 접미사와 접두사로 변환합니다.

Infix to prefix            Infix to postfix
A +B*C / D-E+F            A +B*C / D-E+F
A +*BC / D-E+F            A +BC* / D-E+F
A + / *BCD -E+F           A +BC*D /-E+F
+A /*BCD -E +F            ABC *D /+ -E+F
-+A/*BCDE +F              ABC *D/ +E- +F
+ - +A/*BCDEF             ABC *D / +E –F+

알고리즘

입력 문자열을 왼쪽에서 오른쪽으로 스캔하고 아래에 제공된 단계를 따르십시오 -

  • 1단계 - 입력 기호가 피연산자이면 모니터에 인쇄합니다.

  • 2단계 - 입력 기호가 '('그러면 스택에 푸시합니다.

  • 3단계 - 입력 기호가 ')'이면 '('.

    가 나올 때까지 스택의 모든 내용을 꺼냅니다.
  • Step 4 - 입력 심볼이 연산자라면 현재 입력 심볼이 있는 스택의 맨 위에 있는 연산자의 우선 순위를 확인합니다.

스택 상단의 최상위 우선순위가 현재 심볼의 우선순위보다 크거나 같으면 스택의 내용을 팝하고 현재 심볼을 스택에 넣습니다.

그렇지 않으면 연산자를 스택에 푸시합니다.

  • 5단계 - 입력 기호가 '\0'이면 스택이 비어 있을 때까지 스택의 내용을 꺼냅니다.

스택의 도움으로 infix를 post fix로 변환하는 방법은 다음과 같습니다. -

C 언어에서 스택 표현식의 변환 설명


C 언어에서 스택 표현식의 변환 설명