资源简介
已知一个正则表达式,把它转化为nfa,nfa转化为dfa,dfa最小化 用vc6.0完成的,可以立马用,很好很强大!
代码片段和文件信息
/***********************************************************
Copyright (c) 2004 RM.RYT. All rights reserved.
Developed in Microsoft Visual C++ 6.0 Enterprise Edition.
***********************************************************/
#include
#include
#include
#include
#include
#include
/////////////////////////////////////////////////
#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;
Ve
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 25714 2006-06-25 08:33 DFAScan.cpp
- 上一篇:三维图像区域生长
- 下一篇:ConvDBC_TO_Code.tar.gz
评论
共有 条评论