一、需求分析
1、有乙個魔王總是使用自己的一種非常精煉而抽象的語言講話,沒有人能聽得懂,但他的語言是可以逐步解釋**能聽懂的語言,因為他的語言是由以下兩種形式的規則由人的語言逐步抽象上去的:
(1) α -> β1β2…βm
(2)(θδ1δ2…δn)->θδnθδn-1… θδ1θ
在這兩種形式中,從左到右均表示解釋。試寫乙個魔王語言的解釋系統,把他的話解釋**能聽得懂的話。
2、用下述兩條具體規則和上述規則形式(2)實現。設大寫字母表示魔王語言的詞彙;小寫字母表示人的語言詞彙;希臘字母表示可以用大寫字母或小寫字母代換的變數。魔王語言可含人的詞彙。
(1)b -> tada
(2)a -> sae
3、測試資料:b(ehnxgz)b解釋成tsaedsaeezegexenehetsaedsae
二、詳細**
#include
"iostream"
#include
"string"
using
namespace std;
class
sqstack
//使用鍊錶實現棧類
; node *top,
*base;
public
:sqstack()
;virtual
~sqstack()
;bool
push
(char e)
;bool
pop(
char
&e);
bool
stackempty()
;};//棧的基本操作
sqstack::
sqstack()
sqstack::
~sqstack()
bool sqstack::
push
(char e)
//壓棧操作
else
}bool sqstack::
pop(
char
&e)//出棧操作
else
}bool sqstack::
stackempty()
//判斷是否為空棧
class
sqqueue
//使用鍊錶實現佇列類
; node *head,
*last;
public
:sqqueue()
;virtual
~sqqueue()
;bool
enqueue
(char e)
;bool
dequeue
(char
&e);
bool
queueempty()
;void
outqueue()
;void
enqueue_a()
;void
enqueue_b()
;};//佇列的基本操作
sqqueue::
sqqueue()
sqqueue::
~sqqueue()
bool sqqueue::
enqueue
(char e)
//入佇列
else
}bool sqqueue::
dequeue
(char
&e)//出佇列
else
}void sqqueue::
outqueue()
//輸出佇列中的資料
bool sqqueue::
queueempty()
void sqqueue::
enqueue_a()
void sqqueue::
enqueue_b()
bool
read_language
(sqstack &s)
//將魔王語言倒置壓入棧中
if(left!=right)
return
false
;for
(i=n-
1;i>=
0;i--
)return
true;}
void
push_and_pop
(sqstack &s1,sqstack &s2)
//處理規則2
while
(!s3.
stackempty()
) s2.
push
(e1);}
}}intmain
(void
)while
(!s.
stackempty()
)//不為空則開始執行,將字串從尾到頭依次壓入棧s中
if(e==
'(')
s1.push
(e);
push_and_pop
(s1,s2);}
else
s2.push
(e);
}//魔王語言的前面部分在棧s2的底部,後面部分在棧s2的頂部,需要轉換一下
while
(!s2.
stackempty()
)while
(!s.
stackempty()
) cout<<
"魔王語言可以解釋為:"
<
q.outqueue()
;system
("pause");
return0;
}
三、測試結果
資料結構課程設計 魔王語言解釋
問題描述 有乙個魔王總是使用自己的一種非常精練而又抽象的語言講話,沒有人能聽得懂,但他的語言是可以逐步解釋 能聽懂的語言,因為他的語言是由以下兩種形式的規則由人的語言逐步抽象上去的 1 1 2 m 2 1 2 n n n 1 1 在這兩種形式中,從左到右均表示解釋。試寫乙個魔王語言的解釋系統,把他的...
資料結構魔王語言問題
出處 問題描述 有乙個魔王總是使用自己的一種非常精練而又抽象的語言講話,沒有人能聽得懂,但他的語言是可以逐步解釋 能聽懂的語言,因為他的語言是由以下兩種形式的規則由人的語言逐步抽象上去的 1 1 2 m 2 1 2 n n n 1 1 在這兩種形式中,從左到右均表示解釋。試寫乙個魔王語言的解釋系統,...
魔王語言解釋
問題描述 有乙個魔王總是使用自己的一種非常精練而抽象的語言講話,沒人能聽的懂。但他的語言是可以逐步解釋 能懂得語言的,因為他的語言是由以下兩種形式的規則由人的語言逐 步抽象上去的 1 1 2.n 2 1 2.n n n 1.1 在這兩種形式中,從左到右均表示解釋 從右到左表示抽象。試寫乙個魔王解釋系...