关于spark:SparkESClickHouse-构建DMP用户画像

29次阅读

共计 2539 个字符,预计需要花费 7 分钟才能阅读完成。

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;

}

正文完
 0