데이터 구조 창고 의 응용 - 산술 표현 식 값 구하 기
2414 단어 데이터 구조 전문 지식
1. 창고 의 정의 와 실현 파악 하기;
2. 스 택 을 이용 하여 산술 표현 식 을 푸 는 방법 을 파악 한다.
실험 내용:
교재 의 알고리즘 3.4 를 보완 하고 스 택 을 이용 하여 산술 표현 식 의 값 을 구 하 는 알고리즘 을 수정 합 니 다.알고리즘 3.4 에서 호출 된 몇 가지 함수 에 대해 실현 과정 을 제시 해 야 합 니 다.
(1) 함수 인 (c): c 가 연산 자인 지 판단 하기;
(2) 함수 Precede (t1, t2): 연산 자 t1 과 t2 의 우선 순 위 를 판단 합 니 다.
(3) 함수 Operate (a, theta, b): a 와 b 를 이원 연산 theta.
프로그램 이 실 행 될 때 합 법 적 인 산술 표현 식 (중간 값 및 최종 결 과 는 0 ~ 9 사이 이 고 덧셈 과 괄호 포함) 을 입력 하면 해당 하 는 계산 결 과 를 출력 할 수 있 습 니 다.다음 그림:
#include
#include
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef char SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S)//
{
S.base=(SElemType*)malloc(sizeof(SElemType)*MAXSIZE);
if(!S.base)
exit(OVERFLOW);
S.top=S.base;
S.stacksize=MAXSIZE;
return OK;
}
Status Push(SqStack &S,SElemType e)//
{
if(S.top-S.base==S.stacksize)
return ERROR;//
*S.top++=e;// e , 1;
return OK;
}
Status Pop(SqStack &S,SElemType &e)//
{
if(S.top==S.base)//
return ERROR;
e=*--S.top;// , e;
return OK;
}
SElemType GetTop(SqStack S)//
{
if(S.top!=S.base)//
return *(S.top-1);// ,
}
int In(SElemType e)//
{
if(e=='+'||e=='-'||e=='*'||e=='/'||e=='('||e==')'||e=='#')
return 1;//
else
return 0; //
}
SElemType Precede(SElemType a,SElemType b)//
{
SElemType f;
if(a=='+'||a=='-')
{
if(b=='+'||b=='-'||b==')'||b=='#')
f='>';
else if(b=='*'||b=='/'||b=='(')
f='';
else if(b=='(')
f='';
}
else if(a=='#')
{
if(b=='+'||b=='-'||b=='*'||b=='/'||b=='(')
f='':
Pop(OPTR,theta);
Pop(OPND,b);
Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
case '=':
Pop(OPTR,x);
ch=getchar();
break;
}
}
}
return GetTop(OPND)-'0';
}
int main()
{
printf(" , #
");
printf(" : %d
",EvaluateExpression());
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 구조 도의 기본 조작 실현실험 제목: 그림 의 기본 조작 실현 실험 환경: Visual C++ 6.0 실험 목적: 그림 의 인접 행렬 과 인접 표 두 개의 저장 구조 와 표 시 를 파악 한다. 그림 의 DFS 와 BFS 두 가지 스 트 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.