瞭解過線性表的鏈式存儲結構之後,有人就想出來用數組來代替指針,來描述單鏈表。看看他們是怎麼作到的。數組
讓數組的元素都由兩個數據域組成,data和cur。也就是說,數組的每一個下標都有對應的一個data和cur。數據域data,用來存放數據元素,而cur至關於單鏈表中的next指針,存放該元素的後繼在數組中的下標,咱們把cur叫作遊標。微信
這種用數組描述的鏈表叫作靜態鏈表,咱們把這種描述叫作遊標實現法。指針
另外咱們對數組第一個和最後一個元素做爲特殊元素處理,不存數據。咱們一般把未使用的數組元素稱爲備用鏈表。orm
數組第一個元素,即下標爲0的元素的cur存放備用鏈表的第一個節點的下標;而數組最後一個元素的cur存放第一個有數值的元素的下標,至關於單鏈表中的頭節點的做用。cdn
以下圖: blog
咱們對靜態鏈表的插入和刪除操做簡單瞭解如下:圖片
靜態鏈表中要解決的是:如何用靜態模擬動態鏈表的存儲空間的分配,須要時申請,無用時釋放。內存
對於單鏈表,因爲每一個結點只存儲了向後的指針,到了尾標就中止了向後鏈的操做,這樣,當某一個結點就沒法找到它的前驅結點了。it
將單鏈表中終端結點的指針端由空指針改成指向頭結點,就使整個單鏈表造成一個環,這種頭尾相接的單鏈表稱爲單循環鏈表,簡稱循環鏈表。io
顯然解決了一個問題:當從一個結點出發,訪問鏈表的全部結點。
雙向鏈表:是在單鏈表的每一個結點中,再設置一個指向其前驅結點的指針域。
雙向鏈表的好處:某個結點對先後結點的操做更快;
雙向鏈表的不足:一個結點,兩個指針,耗內存更大。
既然單鏈表能夠由循環鏈表,那麼雙向鏈表固然也能夠是循環表,其結構以下:
關於線性表就整理到這裏了,文中有不對或不足的地方,但願你們可以反饋給我,一塊兒進步。
更多精彩內容,關注個人微信公衆號——Android機動車