1. 程式人生 > >資料結構--基本資料結構

資料結構--基本資料結構

1.基本資料型別區分如下:

2.線性表:

2.1順序表:

        元素在記憶體之中,是連續順序儲存的,在記憶體中劃分的是一塊連續的區域

         

2.2連結串列:

         在一塊記憶體中分散儲存,結點之間以指標連線(邏輯上成為一個整體,物理分散,邏輯整體)


         



2.2.1連結串列的類別

           單鏈表:從頭結點開始,單向的連線起來的資料結構,每一個結點有兩個域(前面為資料域,後面為指標域指向下一個結點的地址)

          

          單鏈表結點的刪除:將a1的指標域直接指向a3即可,a2直接釋放

        

          單鏈表結點的插入:直接將P的指標域指向S,將S的指標域指向a3所在結點 

          具體如下:先將S和和a3所在結點連線(a3原來為P--next,將P--next賦值給S--next),再連線P和S(將S膚質給P--next)。

                            話描述起來有點繞,就是如果P先連線S,P--next的值就會變化。a3由P--next指向連線,a3的P--next  和 新的P--next不一致,就無法連線了,脫節了。

          




         迴圈連結串列:和單鏈表非常相似,迴圈連結串列的最後一個結點的指標域,指向頭結點,形成了一個迴圈

        




        雙鏈表:有兩個指標域,前面一個後面一個,從兩個方向將結點連線起來,形成了雙鏈表,可以朝兩個方向移動。靈活度優於單鏈表,但記憶體開支更大。

       

       雙鏈表的刪除:直接刪除和單鏈表一樣

       

       雙鏈表的插入:可以拆分為兩個單鏈表的插入(只是想象的),實際順序是 將插入結點先分別指向兩個後繼結點,再由兩個前結點指向新插入的結點

        



2.3順序表和連結串列的比較

          

2.4棧(先進後出)

          棧只是一個邏輯概念僅此而已,棧既可以用順序儲存實現,也可以用鏈式儲存實現

          先進先出:進一個出一個,但如果棧中資料已經固定,就只能先進後出了

         

2.5佇列(先進先出)

        普通形式佇列,順序結構

       

        迴圈佇列

         head 頭指標   0

         tail 尾指標    元素的下一個位置

         當未記錄元素時,隊頭指標和隊尾指標針在同一位置,存入新元素時,尾指標後移

         head = tail  佇列可能為空也可能為滿,避免這種情況混淆,犧牲一個空間,當tail在倒數第一個時為滿,tial+1=head 為判滿條件


        一定要注意 tail  是在最後一個實際元素之後的  tail是隊尾指標  沒有值