资源简介
程序用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++指纹识别系统源码
相关资源
- CCS FFT c语言算法
- 小波变换算法 c语言版
- 3des加密算法C语言实现
- DES加密算法C语言实现
- 线性回归算法c语言实现
- 基于C语言的模拟退火算法
- C语言实现的DES对称加密算法
- 用VC6.0实现多边形扫描线填充算法
- c语言编写的货郎担算法
- Em算法(使用C++编写)
- STM32烧写算法flash包
- 永磁同步电机的FOC控制算法
- Proteus仿真:PID算法输出.rar
- 一个模糊PID温度控制算法源代码
- 经典滤波算法
- KMP算法C语言程序
- SVM算法实现(源码+文档)
- 算法A律U律实现
- 人工蜂群算法.docx
- BlowFish加密算法
- C语言常用算法源代码
- c++数组快排算法
- 算法表达式求值.cpp
- PID算法.c
- QR二维码C++源码 算法实现
- 基于opencv漫水填充算法综合
- 信息学奥赛一本通——算法部分
- 银行家算法分配资源的模拟实现(m
- C语言程序设计50例.docx
- 常见排序算法比较.cpp
川公网安备 51152502000135号
评论
共有 条评论