Posted on 2006-06-26 22:49
mahudu@cppblog 閱讀(165)
評論(0) 編輯 收藏 引用 所屬分類:
Programming
???
+++++++++++++++
第四章:?C數(shù)據(jù)結(jié)構(gòu)
+++++++++++++++
67.根據(jù)底層的抽象數(shù)據(jù)類型理解顯式的數(shù)據(jù)結(jié)構(gòu)操作.
68.C語言中,?一般使用內(nèi)建的數(shù)組類型實現(xiàn)向量,?不再對底層實現(xiàn)進行抽象.
69.N個元素的數(shù)組可以被序列for?(i=0;?i<N;?i++)完全處理;?所有其他變體都應(yīng)該引起
警惕.
70.表達式sizeof(x)總會得到用memset或memcpy處理數(shù)組x(不是指針)所需的正確字節(jié)數(shù)
.
71.區(qū)間一般用區(qū)間內(nèi)的第一個元素和區(qū)間后的第一個元素來表示.
72.不對稱區(qū)間中元素的數(shù)目等于高位邊界與低位邊界的差.
73.當(dāng)不對稱區(qū)間的高位邊界等于低位邊界時,?區(qū)間為空.
74.不對稱區(qū)間中的低位邊界代表區(qū)間的第一個元素;?高位邊界代表區(qū)間外的第一個元素
.
75.結(jié)構(gòu)的數(shù)組常常表示由記錄和字段組成的表.
76.指向結(jié)構(gòu)的指針常常表示訪問底層記錄和字段的游標(biāo).
77.動態(tài)分配的矩陣一般存儲為指向數(shù)組列的指針或指向元素指針的指針;?這兩種類型都
可以按照二維數(shù)組進行訪問.
78.以數(shù)組形式存儲的動態(tài)分配矩陣,?用自定義訪問函數(shù)定位它們的元素.
79.抽象數(shù)據(jù)類型為底層實現(xiàn)元素的使用(或誤用)方式提供一種信心的量度.
80.數(shù)組用從0開始的順序整數(shù)為鍵,?組織查找表.
81.數(shù)組經(jīng)常用來對控制結(jié)構(gòu)進行高效編碼,?簡化程序的邏輯.
82.通過在數(shù)組中每個位置存儲一個數(shù)據(jù)元素和一個函數(shù)指針(指向處理數(shù)據(jù)元素的函數(shù)
),?可以將代碼與數(shù)據(jù)關(guān)聯(lián)起來.
83.數(shù)組可以通過存儲供程序內(nèi)的抽象機(abstract?machine)或虛擬機(virtual?machin
e)使用的數(shù)據(jù)或代碼,?控制程序的運作.
84.可以將表達式sizeof(x)?/?sizeof(x[0])理解為數(shù)組x中元素的個數(shù).
85.如果結(jié)構(gòu)中含有指向結(jié)構(gòu)自身|名為next的元素,?一般說來,?該結(jié)構(gòu)定義的是單向鏈
表的結(jié)點.
86.指向鏈表結(jié)點的持久性(如全局|靜態(tài)或在堆上分配)指針常常表示鏈表的頭部.
87.包含指向自身的next和prev指針的結(jié)構(gòu)可能是雙向鏈表的結(jié)點.
88.理解復(fù)雜數(shù)據(jù)結(jié)構(gòu)的指針操作可以將數(shù)據(jù)元素畫為方框|指針畫為箭頭.
89.遞歸數(shù)據(jù)結(jié)構(gòu)經(jīng)常用遞歸算法來處理.
90.重要的數(shù)據(jù)結(jié)構(gòu)操作算法一般用函數(shù)參數(shù)或模板參數(shù)來參數(shù)化.
91.圖的結(jié)點常常順序地存儲在數(shù)組中,?鏈接到鏈表中,?或通過圖的邊鏈接起來.
92.圖中的邊一般不是隱式地通過指針,?就是顯式地作為獨立的結(jié)構(gòu)來表示.
93.圖的邊經(jīng)常存儲為動態(tài)分配的數(shù)組或鏈表,?在這兩種情況下,?邊都錨定在圖的結(jié)點上
.
94.在無向圖中,?表達數(shù)據(jù)時應(yīng)該將所有的結(jié)點看作是等同的,?類似地,?進行處理任務(wù)的
代碼也不應(yīng)該基于它們的方向來區(qū)分邊.
95.在非連通圖中,?執(zhí)行遍歷代碼應(yīng)該能夠接通孤立的子圖.
96.處理包含回路的圖時,?遍歷代碼應(yīng)該避免在處理圖的回路進入循環(huán).
97.復(fù)雜的圖結(jié)構(gòu)中,?可能隱藏著其他類型的獨立結(jié)構(gòu).