最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Fast Morse Code Encode And Decode

2022-05-17 21:45 作者:計(jì)算機(jī)入門(mén)  | 我要投稿

一.寫(xiě)在前面

現(xiàn)在UV段業(yè)余無(wú)線電已經(jīng)玩夠了,需要轉(zhuǎn)戰(zhàn)SW段了,要想在7050kHz上與HAM交流的話,就要學(xué)會(huì)普通話和常用標(biāo)準(zhǔn)縮略語(yǔ);如果想在7030kHz上與HAM通訊的話就要熟練掌握通用的摩爾斯電碼。

二.原理簡(jiǎn)介

首先通過(guò)兩個(gè)數(shù)組分別保存字符摩爾斯編碼和數(shù)字摩爾斯編碼如下:

先說(shuō)編碼,編碼比較簡(jiǎn)單,直接從輸入字符串中順序讀每一個(gè)字符然后判斷這個(gè)字符是數(shù)字還是英文字母直接就可以拿到這個(gè)字符對(duì)應(yīng)的摩爾斯電碼

編碼函數(shù)如下:

這里需要說(shuō)明的是在編碼過(guò)程中原文中的空格被編碼成’/’.

編碼比較簡(jiǎn)單,這里就不在多說(shuō)了。接下來(lái)看解碼部分:

剛開(kāi)始也是準(zhǔn)備直接用循環(huán)來(lái)挨個(gè)匹配;但后來(lái)感覺(jué)這樣效率實(shí)在是低!突然想到上次看到的一篇文章《一分鐘學(xué)會(huì)摩爾斯電碼》其中有這樣一張圖:

這是個(gè)樹(shù)啊啊?。。。。???NICE

那么直接構(gòu)建這棵樹(shù)用來(lái)查詢豈不美哉?

此部分是造樹(shù)函數(shù),傳入一個(gè)根節(jié)點(diǎn),由此根節(jié)點(diǎn)出發(fā)遍地開(kāi)花,造出一個(gè)二叉樹(shù)。戲說(shuō)不是胡說(shuō),這個(gè)函數(shù)可以分為兩個(gè)部分第一個(gè)for循環(huán)主要是遍歷存放英文字母編碼表ctable將編碼表中的英文字母掛到樹(shù)上;第二個(gè)for循環(huán)只要是遍歷數(shù)字編碼表ntable將編碼表中的數(shù)字掛到樹(shù)上。接下來(lái)我就挑選putCharNode()函數(shù)展開(kāi)說(shuō)一下。

三個(gè)參數(shù) root 樹(shù)根;row表示是ctable中的第幾個(gè)編碼;col表是row對(duì)應(yīng)的編碼的第幾位。

分為五種情況:

1.讀到_ 并且此節(jié)點(diǎn)左子樹(shù)非空則遞歸 call putCharNode(root->left,row, ++col)

2.讀到_ 并且此節(jié)點(diǎn)左子樹(shù)空則先malloc新空間 然后 遞歸 call putCharNode(root->left,row, ++col)

3.讀到.并且此節(jié)點(diǎn)左子樹(shù)非空則遞歸 call putCharNode(root->right,row, ++col)

4.讀到.并且此節(jié)點(diǎn)左子樹(shù)空則先malloc新空間 然后 遞歸 call putCharNode(root->right,row, ++col)

5.讀到\0則表示此字符對(duì)應(yīng)的編碼讀取結(jié)束,要進(jìn)行字符掛樹(shù)操作,此時(shí)直接 root->data = 'A' + row即可。

數(shù)字掛樹(shù)同理,接下來(lái)就是讀入摩爾斯電碼查樹(shù)即可得到譯碼結(jié)果:

譯碼函數(shù)傳入樹(shù)根root和摩爾斯電碼src;以空格鍵為分割將其放入temp數(shù)組中然后call findCode(root, temp,0)函數(shù)進(jìn)行遞歸爬樹(shù)找到temp中摩爾斯電碼對(duì)應(yīng)的字符。

至此;此快速摩爾斯電碼編碼&&譯碼關(guān)鍵代碼已經(jīng)全部介紹完。

接下來(lái)看調(diào)用例子demo.c

編譯運(yùn)行結(jié)果如下(Windows GCC):


GitHub傳送:https://github.com/MichaelJiang1997/MorseCode


Fast Morse Code Encode And Decode的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
武威市| 阿拉善盟| 滨州市| 灵寿县| 万山特区| 武胜县| 沅陵县| 华坪县| 贵定县| 香港 | 建湖县| 图木舒克市| 专栏| 贵阳市| 新竹市| 马公市| 聂荣县| 唐海县| 大洼县| 洛川县| 陇川县| 锦屏县| 安阳市| 莱西市| 阿克陶县| 阳山县| 南岸区| 浏阳市| 杂多县| 垫江县| 胶南市| 灵石县| 英德市| 蓬安县| 陕西省| 安乡县| 大洼县| 浦城县| 揭阳市| 康平县| 阜平县|