SOP-C#資料結構-筆記

=========

C#資料結構(參考書目:資料結構使用Visual C#。ISBN:978-986-500-413-2)

  CH4-鏈結串列

    類別,物件及成員(屬性,方法)

      1.public 公開 所有類別皆可存取

      2.private 私有 只適用該類別的成員函數

      3.protected 保護 產生繼承關係的衍生類別可取用

      4.internal 內部 只適用於目前專案(組件)

      5.protected internal 只適用於目前(組件)或衍生自包含類別的型別

    

    建構子

      1. 語法:ClassName() ex. Student()

      2. 建構子存取修飾詞必須使用 public

      3. 一個類別可以有多個建構子(又稱多載),它不能有回傳值,也毋須用void

      4. 類別若不含任何具參數建構子時,程式自動呼叫<預設建構函式>


    解構子

      1. 語法:~ClassName() ex. ~Student()

      2. 解構子不能使用存取修飾詞

      3. 一個類別只能有1個解構子,它不含任何參數,不能有回傳值,無法被繼承或多載

      4. 解構子無法直接呼叫,只有物件被清除時才會執行


    環狀串列

      1.它和單向鏈結串列相似,不同點在於必須將 (最後1個節點) 指向 (第1個節點)

      2.優:

          回收時間固定,無關長度

          可從任一節點追蹤所有節點

      3.缺:

          多1個鏈結空間

          插入節點須改變兩個鏈結

          讀取較慢,因為須多讀取一個鏈結指標

    

    雙向鏈結串列

      1.它和單向鏈結串列相似,不同點在於它有 (左) 和 (右) 兩個節點,而單向鏈結串列只有1個節點 (指向下個節點)

      2.它的(左) 和 (右) 兩個節點,(左)節點指向前節點,(右)節點指向次節點

      3.優:

          已知前後節點,刪除或新增時,較單向節點快

          鏈結斷裂時,可從另一方向重建

      4.缺:

          多一個鏈結空間

          新增節點時,要變更4個鏈結

          刪除節點時,要變更2個鏈結


  CH3-善用陣列

    稀疏矩陣,儲存方式

      1.直接利用 M*N 兩維陣列來儲存,但是浪費空間

      2.利用 三行式結構 儲存非零元素 (row,column,value)

        範例:假設有1個 M*N 的稀疏矩陣,內有 K 個非零元素,須準備 Ary[0:K,1:3]的二維陣列。

        另外,Ary[0,1]:存放稀疏矩陣的列數(M)

            Ary[0,2]:存放稀疏矩陣的欄數(N)

            Ary[0,3]:稀疏矩陣內非零元素(K)


    1.靜態資料結構又稱為 <陣列> ,它使用 <連續記憶體空間> ,儲存有序串列的資料。

    2.<動態記憶體配置> 是指變數儲存配置的過程是在執行(Run time)時,透過作業系統提供可用的記憶體空間。

    3.陣列結構具有的特色,是 佔用 <連續> 的記憶體空間,所存放的元素,其 <資料型態> 皆相同。

    4.int[] grade = {51,63,92,75,84};

      上述宣告了grade是 <1維數值> 陣列,並以大括號作 <陣列值初始化>

    5.要設定陣列元素,可呼叫Array類別的方法 <Array.SetValue(value,index)> ,其屬性 <Array.Length> 能取得陣列長度。

    6.要排序陣列元素,可呼叫Array類別的方法 <Array.Sort(array)>,反轉陣列元素則為 <Array.Reverse(array)>

    7.int[,] Ary = new int[3,4];

      上述宣告了Ary <2維數值> 陣列,其中的 <3> 是列數,欄數是 <4>,取得2維陣列長度的方法為 GetLength(維度);

    8.宣告 <2 * 3 * 4>的3維陣列

      int[,,] aryT = new int[2,3,4];

    9.如何處理稀疏矩陣?

      作法1:直接以 <M*N> 2維陣列儲存

      作法2:使用 <三行式結構> 儲存非零元素

    10.字串初始化為空字串,使用 <String.Empty> 屬性

      字串中插入指定字串,使用 <string.Insert(index,value)> 方法

      字串中取得部份字串,使用 <string.Substring(index,?length)> 方法

      

  CH2-話說資料結構

    演算法的特性(五大特性)

      輸入:零個或多個輸入資料,輸入要清楚的描述或定義。

      輸出:至少會有一個輸出結果,不可以沒有輸出結果。

      明確性:每個指令或步驟必須簡潔明確。

      有限性:在有限步驟後會結束,不會產生無窮迴圈。

      有效性:步驟清楚可行,可用紙筆算出結果。

    

    試述演算法與程式流程圖的關係為何?

      演算法可以用程式流程圖來表現,但是程式流程圖可包含無限迴圈,所以無法利用演算法來表達。

    

      利用文字描述來表示其演算法,並以C#自訂方法來寫出此程式

      情境2:輸入1數值,計算其階乘值

        演算法(文字描述):

          步驟1:輸入1數值

          步驟2:(執行次數為輸入數值-1次)減1前數值 * 減1後數值

      情境1:有3位同學,每人有5科成績,求每位同學的總分及平均分數,及平均分數高於60分的同學。

        演算法(文字描述):

          步驟1:輸入{同學X}的5科成績

          步驟2:計算{同學X}的總分及平均分數

          步驟3:若平均分數大於60分,則顯示出來

          步驟4:總共執行3次

 

留言

這個網誌中的熱門文章

溪和食品有限公司 - 觀光工廠接待人員(薪約30K.免費供餐),今天投遞此份工作。

載入JavaScript code的最佳時機