資料結構 魔王語言解釋

2021-10-01 08:55:25 字數 2890 閱讀 3400

一、需求分析

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 在這兩種形式中,從左到右均表示解釋 從右到左表示抽象。試寫乙個魔王解釋系...