1. 程式人生 > >資料結構筆記(三)

資料結構筆記(三)

線性結構

          ——線性表示及其實現

一.多項式的表示(項數n和各項係數 a_{i},指數i)

     法一:順序儲存結構直接表示——陣列各分量對應多項式各項,a[i]: 項x^{i}的係數a_{i}

           eg:    f(x)=4x^{5}-3x^{2}+1       

        下標i      0           1             2         3               4            5     .......
          a[i]      1     0   -3 0 0 4

    法二:順序儲存結構表示非零項

——將一個多項式看成是一個(a_{i},i)二元組集合,用結構陣列表示,陣列分量是由係數a_{i}和指                                                                數i 組成的結構 ,對應一個非零項

   下標i          0                    1                      2                   ......
係數a_{i} 4 -3 1
指數i 5 2 0

                  * 按指數大小有序儲存

     法三:連結串列結構儲存非零項

—— 連結串列中每個結點儲存多項式中的一個非零項,包括係數和指數兩個資料域以及一個指標域

係數 指數 指標(link)

    eg:f(x)=9x^{12}+15x^{8}+3x^{2}   

二.什麼是線性表?

    由同類型資料元素構成的有序序列的線性結構

  1.  抽象資料型別描述——  型別名稱:線性表(List )

                                      資料物件集:線性表是n個元素構成的有序序列(a_{1},a_{2},......,a_{n})

                                              操作集:L\in List,整數i表示位置,元素X\in ElementType,基本操作主要有:

                                                         1.ListMakeEmpty():初始化一個空線性表L    

                                                         2.ElementTyp FindKth(int K,list L):根據位序    K,返回相應元素

                                                         3. int Find(ElementType X,List L):  線上性表L中查詢X第一次出現的位置

                                                         4.Void Insert(Element Type X,int i,List L):在位序i前 插入一個新元素X                 

    2. 順序儲存實現:利用陣列的連續儲存空間順序存放線性表的各元素

       訪問下標為i的元素:L.Data[i] 或者 Ptrl->Data[i]                  線性表長度:L.Last+1 或者 Ptrl->Last+1

      3. 鏈式儲存實現:不要求邏輯上相鄰的兩個元素物理上也相鄰,通過鏈建立起資料元素之間的邏輯關係。

                         

 3. 廣義表

 p(x,y)=9x^{12}y^{2}+4x^{12}+15x^{8}y^{3}-x^{8}y+3x^{2}        p(x,y)=(9y^{2}+4)x^{12}+(15y^{3}-y)x^{8}+3x^{2}     

廣義表示線性表的推廣,線性表元素為單元素,對於廣義表,元素也可以是廣義表

多重連結串列:節點可能隸屬於多個鏈  

 eg:  稀疏矩陣的連結串列表示   :只儲存非零元素項,每個結點通過兩個指標域把同行同列串起來