资源简介
程序用VS2015,C++来实现的,运用了很多C++的知识,实现了正则式—》NFA—》DFA—》DFA最小化。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
#define NULL 0
#define LStack linkedStack
// 链式栈类的前视定义
template
class linkedStack;
// 定义链式栈结点类
template
class StackNode
{
friend class linkedStack;
private:
T data;
StackNode *next;
StackNode(T item = 0 StackNode *p = NULL)
{
data = item;
next = p;
}
};
// 定义链式栈类
template
class linkedStack
{
private:
StackNode *top;
public:
linkedStack();
~linkedStack();
bool IsEmpty(void) const;
int Length(void) const;
void Push(const T &item);
T Pop(void);
T GetTop(void);
void Clear(void);
};
// 构造函数
template
linkedStack::linkedStack()
{
top = NULL;
}
// 析构函数
template
linkedStack::~linkedStack()
{
Clear();
}
// 判断栈是否为空
template
bool linkedStack::IsEmpty(void) const
{
return (!top);
}
// 获取队列的长度
template
int linkedStack::Length(void) const
{
StackNode *temp = new StackNode();
temp = top;
int length = 0;
while (temp)
{
temp = temp->next;
length++;
}
return length;
}
// 压入数据(入栈)
template
void linkedStack::Push(const T &item)
{
top = new StackNode(item top);
}
// 抽出数据(出栈)
template
T linkedStack::Pop(void)
{
if (!IsEmpty())
{
StackNode *temp = top;
top = top->next;
T value = temp->data;
delete temp;
return value;
}
else
{
cout << “Stack Already Empty!“ << endl;
_getch();
exit(1);
}
}
// 获取栈头数据
template
T linkedStack::GetTop(void)
{
if (!IsEmpty())
{
return top->data;
}
else
{
cout << “Stack Already Empty!“ << endl;
_getch();
exit(1);
}
}
// 设置栈为空栈
template
void linkedStack::Clear(void)
{
StackNode *temp = new StackNode();
while (top)
{
temp = top;
top = top->next;
delete temp;
}
}
// 定义邻接表的边表类
class Edge
{
public:
int number;
int position;
char weight;
Edge *link;
Edge();
Edge(int num int pos char ch);
};
Edge::Edge()
{
number = -1;
position = -1;
link = NULL;
}
Edge::Edge(int num int pos char ch)
{
number = num;
position = pos;
weight = ch;
link = NULL;
}
// 定义邻接表的顶点类
class Vertex
{
public:
int number;
Vertex *next;
Edge *out;
Vertex();
Vertex(int num);
};
Vertex::Vertex()
{
number = -1;
next = NULL;
out = NULL;
}
Vertex::Vertex(int num)
{
number = num;
next = NULL;
out = NULL;
}
// 用邻接表定义的图类
class AdjacentTable
{
private:
Vertex *startVertex;
int numOfVertices;
int numOfEdges;
public:
AdjacentTable();
~AdjacentTable();
int GetValueByPos(int pos) const;
int GetPosByValue(int value) const;
char GetWeightByPos(int v1 int v2) const;
char GetWeightByValue(int value1 int value2) const;
void SetValue(int value int pos);
void InsertVertex(i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-10-08 12:35 DFA-NFA\.vs\
目录 0 2015-10-08 12:35 DFA-NFA\.vs\DFA-NFA\
目录 0 2015-10-08 12:35 DFA-NFA\.vs\DFA-NFA\v14\
文件 22528 2015-10-08 12:34 DFA-NFA\.vs\DFA-NFA\v14\.suo
目录 0 2015-10-08 12:35 DFA-NFA\Debug\
文件 92160 2015-10-08 12:31 DFA-NFA\Debug\DFA-NFA.exe
文件 447848 2015-10-08 12:31 DFA-NFA\Debug\DFA-NFA.ilk
文件 1019904 2015-10-08 12:31 DFA-NFA\Debug\DFA-NFA.pdb
文件 11141120 2015-10-08 12:34 DFA-NFA\DFA-NFA.sdf
文件 1303 2015-10-01 12:14 DFA-NFA\DFA-NFA.sln
目录 0 2015-10-08 12:35 DFA-NFA\DFA-NFA\
目录 0 2015-10-08 12:35 DFA-NFA\DFA-NFA\Debug\
文件 1383 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.log
文件 156240 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.obj
目录 0 2015-10-08 12:35 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\
文件 668 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\CL.command.1.tlog
文件 10602 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\CL.read.1.tlog
文件 376 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\CL.write.1.tlog
文件 169 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\DFA-NFA.lastbuildstate
文件 1050 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\li
文件 2758 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\li
文件 348 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\DFA-NFA.tlog\li
文件 330752 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\vc140.idb
文件 380928 2015-10-08 12:31 DFA-NFA\DFA-NFA\Debug\vc140.pdb
文件 22650 2015-10-08 12:36 DFA-NFA\DFA-NFA\DFA-NFA.cpp
文件 7474 2015-10-08 11:58 DFA-NFA\DFA-NFA\DFA-NFA.vcxproj
文件 948 2015-10-01 12:26 DFA-NFA\DFA-NFA\DFA-NFA.vcxproj.filters
- 上一篇:A星寻路算法c++语言实现
- 下一篇:完整的c++指纹识别系统源码
相关资源
- A星寻路算法c++语言实现
- c语言实现的遗传算法
- 机器学习-数据挖掘-梯度下降算法C+
- ISODATA算法C语言程序
- 基于混沌算法的图像加密系统C++源码
- KMP中文字符匹配算法的C++实现
- 图像增强MSRCR算法
- FDTD 算法以及C语言代码
- 区域填充三种算法
- C语言经典算法最大流问题
- VC++ AES加密算法实现与范例的源代码
- 网络拓扑发现算法c++源码
- 文件压缩程序基于哈夫曼C++算法
- 四种页面置换算法代码
- 数据结构算法与应用-c++语言描述(代
- 数据结构与算法分析c++第三版课后习
- 图像边缘提取经典算法MFC实现
- 算法c语言实现英文版part1-4
- 常用算法程序集C语言描述第三版(
- libcstl数据结构和常用的算法库
- 龙格库塔算法c++
- MD5算法源代码(MFC)
- 蚁群算法解决旅行商问题c++
- 自定义词法规则的词法分析器
- C++ 排课程序源代码
- 旅行商问题TSP三种解决算法 基于C++的
- 梁友栋-barsky算法
- VC++经典小游戏含代码 算法说明
- MFC实现RSA算法
- 遗传算法代码NSGA-II
评论
共有 条评论