download:Spark+ES+ClickHouse 构建DMP用户画像
include<iostream.h>
typedef int Status;
typedef char Cstack;
define OK 1
define ERROR 0
typedef struct StackNode
{
Cstack data;struct StackNode *next;
}StackNode,*LinkStack;
Status InitStack(LinkStack &S)
{
S=NULL;return OK;
}
Status Push(LinkStack &S,Cstack e)
{
StackNode *p;p=new StackNode;p->data=e;p->next=S;S=p;return OK;
}
Status Pop(LinkStack &S,Cstack &e)
{
StackNode *p;if(S==NULL) return ERROR;e=S->data;p=S;S=S->next;delete p;return OK;
}
Cstack GetTop(LinkStack S)
{
if(S!=NULL)return S->data;
}
Status In(Cstack ch)
{
cin>>ch;if(ch=='+') return OK;else if(ch=='-') return OK;else if(ch=='*') return OK;else if(ch=='/') return OK;else if(ch=='#') return OK;else return ERROR;
}
Cstack Precede(Cstack t1,Cstack t2)
{
switch(t1){case '+': switch(t2) { case '+':return '>';break; case '-':return '>';break; case '*':return '<';break; case '/':return '<';break; case '(':return '<';break; case ')':return '>';break; case '#':return '>';break; } break; case '-': switch(t2) { case '+':return '>';break; case '-':return '>';break; case '*':return '<';break; case '/':return '<';break; case '(':return '<';break; case ')':return '>';break; case '#':return '>';break; } break; case '*': switch(t2) { case '+':return '>';break; case '-':return '>';break; case '*':return '>';break; case '/':return '>';break; case '(':return '<';break; case ')':return '>';break; case '#':return '>';break; } break; case '/': switch(t2) { case '+':return '>';break; case '-':return '>';break; case '*':return '>';break; case '/':return '>';break; case '(':return '<';break; case ')':return '>';break; case '#':return '>';break; } break; case '(': switch(t2) { case '+':return '<';break; case '-':return '<';break; case '*':return '<';break; case '/':return '<';break; case '(':return '<';break; case ')':return '=';break; case '#':return '>';break; } break; case ')': switch(t2) { case '+':return '>';break; case '-':return '>';break; case '*':return '>';break; case '/':return '>';break; case '(':return '=';break; case ')':return '>';break; case '#':return '>';break; } break; case '#': return '='; break;}
}
Cstack Operator(Cstack t1,Cstack t2,Cstack t3)
{
t1=t1-48;t3=t3=48;int c;switch(t2){case '+': c=t1+t2+48; return c; break;case '-': c=t1-t2+48; return c; break;case '*': c=t1*t2+48; return c; break;case '/': c=t1/t2+48; return c; break;}
}
void main()
{
LinkStack OPTR,OPAN;Cstack cha1,cha2,x,cha,thea;InitStack(OPTR);InitStack(OPAN);Push(OPTR,'#');cout<<"输出表达式的两头值及最终后果局限于0~9之间的个位数并以#号结束"<<endl;while(cha!='#'||GetTop(OPTR)!='#'){ cin>>cha; if(!In(cha)) Push(OPAN,cha); else switch(Precede(GetTop(OPTR),cha)) { case '<': Push(OPTR,cha); cin>>cha; break; case '>': Pop(OPTR,thea); Pop(OPAN,cha1); Pop(OPAN,cha2); Push(OPAN,(cha1,thea,cha2)); break; case '=': Pop(OPTR,x); break; }}cout<<GetTop(OPAN)<<endl;return;
}