스택은 데이터가 한쪽 끝에서만 삽입 및 제거되는 선형 데이터 구조입니다.
알고리즘
다음은 푸시( )에 대한 알고리즘입니다. -
- 스택 오버플로를 확인합니다.
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로 변환하는 방법은 다음과 같습니다. -