日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《编程珠玑》笔记3 数据结构选择

發(fā)布時間:2024/4/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《编程珠玑》笔记3 数据结构选择 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這一章主要討論良好的數(shù)據(jù)結(jié)構(gòu)對程序的重要影響

1.調(diào)查程序:問題的關(guān)鍵是決定怎樣用數(shù)組來存儲哪些數(shù)據(jù)。

  格式信函編程:(更像是腳本程序所使用的形式)

  對于一段應用較多的程序,只有個別變量與外界輸入有關(guān),可以將這些變量以特定的參數(shù)來表示,建立一個模板,然后使用特定的發(fā)生器來解釋這個模板。如:

?   一個模板(schema)類似如下:

Welcome back, $1!we hope you have fun in the holidaywith $0 family.It will take $$120.your address: $2 $3date: $4

? 一個發(fā)生器如下:(對于模板中的$符號,用$$來表示)

read fields from databasefor start to end in schemac=getchar in schemaif(c != '$')printchar celsec = getchar in schemacase c:'$': printchar '$';'0'-'9': printstring field[c];default: error("bad schema")

2.一組示例

  菜單:考慮如下類型代碼:

void button0_clicked(){item0.checked = 1;item1.checked = 0;item2.checked = 0;}void button1_clicked(){item0.checked = 0;item1.checked = 1;item2.checked = 0;}void button2_clicked(){item0.checked = 0;item1.checked = 0;item2.checked = 1;}

??? 實際item可能會有更多,這些函數(shù)可以做如下簡化(使用數(shù)組來代替這些item):

void button_clicked(int choice){for(i = 0; i < numchoices; i++)item[i].checked = 0;item[choice].checked = 1;}

  出錯信息

  日期函數(shù)

3.用于特殊數(shù)據(jù)的工具

  超文本:(html格式文本)

  名字-值對:(多用于數(shù)據(jù)庫中)

  數(shù)據(jù)庫

  特定領(lǐng)域編程語言:如GUI,curses,openGL……這些都為特定目的的程序提供了豐富的函數(shù)庫支持

4.原理

  使用數(shù)組編寫重復代碼;

   封裝復雜結(jié)構(gòu)

  盡可能使用高級工具

  從數(shù)據(jù)結(jié)構(gòu)建立程序結(jié)構(gòu)
5.習題

  5.1在每一稅率區(qū)間都有三個值:該區(qū)間的下界S, 基本稅收B,超過下界部分稅收E,設計一個(S,B,E)的數(shù)據(jù)結(jié)構(gòu),并按照S排序,通過二分搜索找到相應的區(qū)間(或者直接順序搜索也可以,這樣就與if的效果相同),然后利用相應的三元組計算tax。

  5.2輸入為k,a1,……,ak,c1,……,ck+1,輸出為a1,……am.

    由于只給出了遞歸式,只能先算出ak+1, ak+2,.....,am.

    最好的辦法是使用一個長為k的數(shù)組,自底向上計算,(有點像動態(tài)規(guī)劃中自底向上一樣)這樣在計算后一個值能夠確保前面的值都已知。

    如果使用一個遞歸程序,也就是說,在得到am時,計算am-1,am-2,...,am-k,同樣遞歸計算am-1時,再計算am-2,am-3,...am-k-1,(這就是自頂向下的方法)這樣會產(chǎn)生很多重復計算,效率很低。當然,也可以先申請一個數(shù)組,使用備忘錄方法解決這一問題。

  5.3大寫字母的圖形化表示

  5.4

  5.5

  5.6

  5.7

? 5.8

轉(zhuǎn)載于:https://www.cnblogs.com/dandingyy/archive/2012/09/01/2666988.html

總結(jié)

以上是生活随笔為你收集整理的《编程珠玑》笔记3 数据结构选择的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。