資源簡介
形式語言與自動機,圖靈機的C++代碼實現,用作轉換器,有計算功能,X的y次冪

代碼片段和文件信息
#include?
using?namespace?std;
//?圖靈機節(jié)點,用于構造一個雙向鏈表
struct?turing_node
{
turing_node?*pro?*next;
char?data;
};
int?main()
{
int?x?=?0?y?=?0;
cout?<“輸入x和y,計算x的y次冪:“;
cin?>>?x?>>?y;
//?開始創(chuàng)建鏈表,得到y(tǒng)0x010的初始帶
turing_node?*p?*tail?*s;?//?采用尾插法,tail為尾,s用于創(chuàng)建新節(jié)點
p?=?new?turing_node;?//?p指向鏈表開頭
p->data?=?‘1‘;
p->pro?=?NULL;
p->next?=?NULL;
tail?=?p;
s?=?NULL;
int?i?=?0;
while?(i? {
s?=?new?turing_node;
s->data?=?‘1‘;
s->pro?=?tail;
s->next?=?NULL;
tail->next?=?s;
tail?=?s;
i++;
}
s?=?new?turing_node;
s->data?=?‘0‘;
s->pro?=?tail;
s->next?=?NULL;
tail->next?=?s;
tail?=?s;
i?=?0;
while?(i? {
s?=?new?turing_node;
s->data?=?‘1‘;
s->pro?=?tail;
s->next?=?NULL;
tail->next?=?s;
tail?=?s;
i++;
}
s?=?new?turing_node;
s->data?=?‘0‘;
s->pro?=?tail;
s->next?=?NULL;
tail->next?=?s;
tail?=?s;
s?=?new?turing_node;
s->data?=?‘1‘;
s->pro?=?tail;
s->next?=?NULL;
tail->next?=?s;
tail?=?s;
s?=?new?turing_node;
s->data?=?‘0‘;
s->pro?=?tail;
s->next?=?NULL;
tail->next?=?s;
tail?=?s;
//?鏈表創(chuàng)建完畢
//?計算開始
turing_node?*read_write?=?p;?//?讀寫頭
int?state?=?0;?//?狀態(tài)標志
while?(state?!=?17)?//17設為終點狀態(tài)
{
switch?(state)
{
case?0:
if?(read_write->data?==?‘0‘)
{
state?=?17;
read_write?=?read_write->next;
}
else?if?(read_write->data?==?‘1‘)
{
state?=?1;
read_write->data?=?‘a‘;
read_write?=?read_write->next;
}
else
{
state?=?17;
}
break;
case?1:
if?(read_write->data?==?‘0‘)
{
state?=?2;
read_write?=?read_write->next;
}
else?if?(read_write->data?==?‘1‘)
{
read_write?=?read_write->next;
}
else
{
state?=?17;
}
break;
case?2:
if?(read_write->data?==?‘0‘)
{
state?=?10;
read_write?=?read_write->pro;
}
else?if?(read_write->data?==?‘1‘)
{
state?=?3;
read_write->data?=?‘b‘;
read_write?=?read_write->next;
}
else
{
state?=?17;
}
break;
case?3:
if?(read_write->data?==?‘0‘)
{
state?=?4;
read_write?=?read_write->next;
}
else?if?(read_write->data?==?‘1‘)
{
read_write?=?read_write->next;
}
else
{
state?=?17;
}
break;
case?4:
if?(read_write->data?==?‘0‘)
{
state?=?9;
read_write?=?read_write->pro;
}
else?if?(read_write->data?==?‘1‘)
{
state?=?5;
read_write->data?=?‘c‘;
read_write?=?read_write->next;
}
else
{
state?=?17;
}
break;
case?5:
if?(read_write->data?==?‘0‘)
{
state?=?6;
read_write?=?read_write->next;
}
else?if?(read_write->data?==?‘1‘)
{
read_write?=?read_write->next;
}
else
{
state?=?17;
}
break;
case?6:
if?(read_write?==?NULL)
{
s?=?new?turing_node;
s->data?=?‘1‘;
s->pro?=?tail;
s->ne
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????6630??2018-10-25?16:30??turing_x_exp_y.cpp
?????文件???????61275??2018-11-04?19:30??圖靈機.docx
- 上一篇:C++實現的高斯投影正算和反算
- 下一篇:單片機C語言實現流水燈,跑馬燈仿真程序
評論
共有 條評論