⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logic.h

📁 逻辑表达式转化
💻 H
字号:


#ifndef _LOGIC_HPP_
#define _LOGIC_HPP_


#include <iostream>
#include "logic_node.h"
#define MAX 10000    //最大简单合取范式
using std::cout;
using std::cin;
using std::endl;

	//声明逻辑类
class LogicTree
{								
public:
	LogicTree();
	~LogicTree(){ delTree( tree ); }
	int  isLeftBracket( char a )const{ return a == '('; } 
	int  isRightBracket( char a )const{ return a == ')'; }
    int  isCharacter( char )const;				//判断是否为操作数
	int  isOperator( char )const;				//判断是否为运算符
	int  doResult( link )const;					//计算逻辑表达式的值
	int  isRight( char * );						//判断扬输入的表达式是否合法
	int  priority( char )const;					//判断保修运算的优先级
	void negateTree( link );					//把在特号外的否定移入特号内
	void delTree( link );						//删除整棵树
	void printTree();							//打印表达式
	void print( link );
	void setTree( link _tree ){ tree = _tree; }			
	void changeNode_2( link );					//计算表达式中的蕴含运算符
	void changeAllNode( link , link );			//说教表达式中的合取运算符
	void record_string2( link );				//记录表达式中的蕴含运算符
	void record_string3( link );
	void clean( link );							//刷新娄组value[MAX]
	void arrange( link );						//改变子树成最后一层为操作数且右结点只有操作数运算符结点												  //
	void arrangeTree( link );						
	void add( link );							//合取一个该谙单合取表达式中没有操作数以及它的否定
	void add_1( link , link , int );			
	void newBracket( link );					//将所有运算符结点的成员变量bracket设为0
	void paiXu( int & );								//对简单合取范式内的操作数排序
	void F5();							//处理在简单合取式中出现多次的操作数
	void changeTree( link );					//将输入的表达式转换成主析取范式
	link newTree();								//建立主析取范式的二叉树
	link getTree()const { return tree; }
	link changeNode_1( link );					//化简两个子表达式的合取运算 
	link copy( link );							//复制二叉树
	link buildTree( char * );					//建立二叉树
private:
	int  num;			//在建立二叉树是用于记录已读到的字符串位置
	int  goon;			//判断是否再次执行合取运算
	int  num1;			//在记录表达式中字符果用天标记数组value[54]位置
	int  index_1;		//标记string_1的位置	
	int  index_2;		//标记string_2的位置
	char value[54];		//记录表达式中的字符种类
	char value_1[54];	//记录对应子树中含有的字符种类
	link string1[MAX];	//记录表达式中蕴含运算符
	link string2[MAX];	//记录转换面析取范式后的保个简单合取式的顶结点
	link string3[MAX];	//记录有一个子结点为合取运算符的运算符
	link tree;			//指向二叉树的头结点
};


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -