데이터 구조 - 접미사 식 접미사 식 (C 언어)
기능 구현 절차:
1. 비 연산 자 를 만 나 직접 출력 하기;2. 창고 가 비어 있 을 때 연산 자 를 만 나 창고 에 들어간다.3. 왼쪽 괄호 를 만 나 창고 에 넣 기;4. 오른쪽 괄호 를 만 나 스 택 작업 을 수행 하고 스 택 에서 나 오 는 요 소 를 출력 합 니 다. 스 택 이 왼쪽 괄호 가 나 올 때 까지 왼쪽 괄호 는 출력 하지 않 습 니 다.5. 다른 연산 자 '+' - '*' / '를 만 났 을 때 모든 우선 순위 가 이 연산 자 보다 크 거나 같은 스 택 꼭대기 요 소 를 팝 업 한 다음 에 이 연산 자 를 스 택 에 넣 습 니 다.6. 마지막 으로 스 택 에 있 는 요 소 를 스 택 에서 순서대로 출력 합 니 다.
//
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef struct //
{
char *base;
char *top;
int stacksize;
}SqStack;
/********* ********/
int InitStack(SqStack &S)//
{
S.base=(char*)malloc(sizeof(char)*MAXSIZE);
if(!S.base) exit(OVERFLOW);
S.top=S.base;
S.stacksize=MAXSIZE;
return OK;
}
int Push(SqStack &S,char e)//
{
if(S.top-S.base==S.stacksize) return ERROR;//
*S.top=e; // e , 1;
S.top++;
return OK;
}
int Pop(SqStack &S,char &e)//
{
if(S.top==S.base) return ERROR; //
--S.top;// , e;
e=*S.top;
return OK;
}
char GetTop(SqStack S)//
{
if(S.top!=S.base)//
return *(S.top-1);// ,
}
int In(char e)//
{
if(e=='+'||e=='-'||e=='*'||e=='/'||e=='('||e==')'||e=='#')
return 1;//
else
return 0; //
}
char Compare(char a,char b)//
{
char f;
if(a=='+'||a=='-')
{
if(b=='+'||b=='-')
f='>';
else if(b=='*'||b=='/')
f='';
}
else if(a=='#')
{
if(b=='+'||b=='-'||b=='*'||b=='/'||b=='(')
f=''){
Pop(S,c);
printf("%c",c);
t=Compare(GetTop(S),ch);
}
Push(S,ch);
}
ch=getchar();
}
}
int main(){
SqStack S;
InitStack(S); //
Eva(S); //
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.