• 大小: 21KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-05-11
  • 语言: C/C++
  • 标签: c++  NFA  DFA  DFA最小化  

资源简介

用VC 6.0运行,完美编译运行,反正我们老师检查是完美的过

资源截图

代码片段和文件信息

#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 << “栈已经为空!“ << endl;
getch();
exit(1);
}
}
// 获取栈头数据
template 
T linkedStack::GetTop(void)
{
if (! IsEmpty())
{
return top->data;
}
else
{
cout << “栈已经为空!“ << 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
{

评论

共有 条评论