zoukankan      html  css  js  c++  java
  • POJ 2106

    知识点:栈的应用
    语法经验,主函数外的函数中的指针变量不能付给主函数中的指针,因为函数调用完后就会释放内存,赋值相当于没赋
    #include<iostream>
    using namespace std;
    const int maxn=110;
    void trans(char *exp,char *atexp);
    int oc( char *s);
    int main()
    {
    	int t=1,jud;
    	char exp[maxn];
    	char atexp[maxn];
    	while(cin.getline(exp,maxn))
    	{
    		trans(exp,atexp);
    		jud=oc(atexp);
    		char fi=jud?'V':'F';
    		cout<<"Expression "<<t<<": "<<fi<<endl;
    		t++;
    	}
    	return 0;
    }
    void  trans(char *exp,char *atexp)
    {
    	char st[maxn];
    	int top=-1;
    	int i=0,j=0;
    	char tem=exp[i++];	
    	while(tem!='\0')
    	{
    		if(tem==' ');
    		else if(tem=='V'||tem=='F')
    		{
    			atexp[j++]=tem;
    		}
    		else if(tem=='|')
    		{
    			while(top>-1&&(st[top]=='&'||st[top]=='!'||st[top]=='|'))
    			{
    				atexp[j++]=st[top--];
    			}
    		st[++top]=tem;
    		}
    		else if(tem=='&')
    		{
    			while(top>-1&&(st[top]=='!'||st[top]=='&'))
    			{
    				atexp[j++]=st[top--];
    			}
    			st[++top]=tem;
    		}
    		else if(tem=='!')
    		{
    			st[++top]=tem;
    		}
    		else if(tem=='(')
    		{
    			st[++top]=tem;
    		}
    		else 
    		{
    			while(st[top]!='('){
    			atexp[j++]=st[top--];
    			}
    			top--;
    		}
    		tem=exp[i++];
    	}
    	while(top>-1)
    	{
    		atexp[j++]=st[top--];
    	}
    	atexp[j]='\0';///////
    }
    int oc(char *s)
    {
    	int op[maxn];
    	int top=-1;
    	int i=0;
    	while(s[i]!='\0')
    	{
    		if(s[i]=='V')
    			op[++top]=1;
    		else if(s[i]=='F')
    			op[++top]=0;
    		else
    		{
    			switch (s[i])
    			{
    			case '|':
    				op[top-1]|=op[top];
    				top--;break;
    			case '&':
    				op[top-1]&=op[top];
    				top--;break;
    			case '!':
    				op[top]=!op[top];break;
    			}
    		}
    		i++;
    	}
    	return op[top];
    }
    
  • 相关阅读:
    广播和多播
    nohup和&后台运行,进程查看及终止
    Java知识汇总——思维导图
    linux 基础命令使用
    scp命令详解
    linux 安装crontab执行定时任务
    linux磁盘挂载
    虚拟机安装网络设置
    Android直播实现srs流媒体服务器部署
    java的(PO,VO,TO,BO,DAO,POJO)解释
  • 原文地址:https://www.cnblogs.com/lj030/p/3002319.html
Copyright © 2011-2022 走看看