資料結構與演算法課程設計求助

時間 2021-12-19 14:28:11

1樓:

看上去有點象遊戲引擎。

我最近也在研究這個。

不過,這是編譯原理的範疇。

具體實現起來很複雜的,不過,可以給你一些大致的思路:

1、文字編輯器或者源**讀取程式(可以是使用者輸入或者從檔案讀入)

2、詞法分析。(其實詞法分析就是將各個元素比如變數、關鍵字、運算子等分離出來)

3、語法分析,語義分析。(其作用是生成語法樹)

4、直譯器,執行時環境。(維護程式執行時的環境,比如區域性變數的建立、撤銷;函式呼叫時環境的儲存;堆、棧維護等。另外,還要提供固有命令(函式)的實現,就是說,使用者呼叫了固有的命令時,將會發生什麼。

)總的來說,很複雜的。這是一個很大的專案。別說200分,就是2000元,也很難找到。

推薦你看看編譯原理(不過國內的編譯原理的書籍,都只講皮毛,要看就看英文的)另外,有一本《高階遊戲指令碼程式設計》不錯。

再就是,你可以使用現成的語法分析生成器,比如:lex+yacc,不過需要修改生成的**,才能在vc中使用。

2樓:電池專業戶

我只幫你找到這些了,希望可以幫到你。祝您好運!

一、 問題描述和分析

問題描述:

目前,進行快速遠距離通訊的主要手段是電報,即將需傳送的文字換換成由二進位制的字元組成的字串。在傳送電文時,希望總長儘可能的短。如果每個字元設計長度不等的編碼,且讓電文中出現次數較多的字元儘可能短的編碼,則傳送電文的總長便可減少。

若要設計長短不等的編碼,則必須是任一個字元的編碼都不是另一個字元編碼的字首,這種編碼稱作字首編碼。

問題分析:

可以利用二叉樹來設計二進位制的字首編碼。假設有一顆如圖所示的二叉樹,其4個葉子結點分別表示a、b、c、d這四的字元,且約定左分支表示字元』0』,右分支表示字元』1』,則可以從根結點到葉子結點的路徑上分支字元組成的字串作為該葉子結點字元的編碼。可以證明得到的必為二進位制編碼。

如圖所得a、b、c、d的二進位制字首編碼分別為0、10、110和111。

二、 資料結構設計

因為哈夫曼樹共有2n-1個節點,所以我們定義一個大小為2n-1的一維陣列來儲存哈夫曼樹中的節點,其中前n各元素儲存的是初始森林中的n個葉子節點,由初始森林中的兩個最小的葉子節點構成的新節點儲存在第n+1的單元中,以脆推,直到所有的節點都儲存完畢為止。

typedef struct

hafnode;

typedef struct

code;

三、 演算法設計

主要演算法的基本思想:

 編碼演算法:

根據輸入的資料,從中選取兩棵根結點權值最小且沒有被選過的樹作為左右子樹構造一棵新的二叉樹,且置新的二叉樹的根結點的權值為左右子樹上根結點的權值之和。

哈夫曼樹已經建立後,從葉子到根逆向求每一個字元的哈夫曼編碼。

 譯碼演算法:

譯碼的過程是分解電文中的字串,從根出發,如果為字元『0』就找左孩子,如果為字元『1』就找右孩子,直至葉子結點,得到該子串相應的字元並輸出。

3樓:匿名使用者

開玩笑吧!你那堆「動畫語言」類似指令碼,你要讓人開發個解讀指令碼的「編譯器」?

還要利用此編譯器執行動畫程式?

哈哈……兄弟,200分不行啊……200塊錢找人做吧!

4樓:匿名使用者

去csdn上看看吧,至於物件可以用連結串列儲存

混凝土結構課程設計日記,混凝土結構 課程設計

一 名稱 名稱就是課題的名字 第一,名稱要準確 規範。準確就是 的名稱要把 研究的問題是什麼,研究的物件是什麼交待清楚,的名稱一定要和研究的內容相一致,不能太大,也不能太小,要準確地把你研究的物件 問題概括出來。第二,名稱要簡潔,不能太長。不管是 或者課題,名稱都不能太長,能不要的字就儘量不要,一般...

機械設計課程設計資料,機械設計課程設計

具體說是什麼,課程設計多了,或者hi我說明具體內容。機械設計課程設計 cad倒是沒有,當年畫這個全是手工,指導下倒是可以。首先根據所給條件算出兩個齒輪的傳動比,這個應該在機械設計課上講過或書裡有公式的。然後根據傳動比計算兩個齒輪的所有資料,這樣就可以確定兩個軸的距離,再根據軸和齒輪來計算變速箱所有的...

資料結構中演算法分析的問題

武當單挑王 第一個第二個問題,就相當於你高中學的f x 沒什麼實際意義,也不用糾結 為什麼用t表示呢,代表時間 而一般所說的時間複雜度,都是用大o表示的 你學過函式應該知道,次數最高的那項對函式的增長影響最大,所以這裡可以忽略其他低次項 前面的係數也可以省去,對於這個程式的就是o n2 幻世萌 線性...