1. 程式人生 > >單鏈表定義-(線性表的連結串列儲存結構)

單鏈表定義-(線性表的連結串列儲存結構)

線性表分為:順序儲存結構和連儲存結構

順序儲存結構的優點:

    1.空間利用率高,幾乎不需要額外的空間開銷.

    2.資料的邏輯結構和物理結構完全一致.

    3.結點地址計算的時間和線性表的規模大小無關.

    4.可以用一維陣列實現儲存.

但是有兩個致命的缺點:

     1.順序儲存結構的儲存空間是靜態分配,必須有足夠大的連續儲存空間,如果不能則無法實現儲存.在建立順序表時,儲存空間大小有時無法確切估計,估計過大回會使空閒區段的部分空間長期閒置,估計過小則會在操作中因空間不夠而產生溢位.

    2.插入操作和產出操作在大多數情況下,引起大量節點的頻繁移動,降低了演算法的時間效率.

因此:順序儲存結構 比較適合規模較小,長度變化不大且不很頻繁的線性表儲存實現.

克服線性表順序儲存結構的方法採用連結串列儲存結構,連結串列儲存結構的儲存分配方式靈活,有效性好.用連結串列儲存結構儲存的線性表稱為"連結串列".

連結串列分為:單鏈表,迴圈連結串列和雙向連結串列.

下面就介紹一下單鏈表的基本操作.

鏈儲存結構的儲存分配以節點為單位,每個節點由節點資料和指標構成.

單鏈表的結點通常定義成兩個域:結點資料和指標域.

指向首節點的指標稱為頭指標,存放在一個已命名的的頭指標變數中,例如:H.頭指標變數名就是單鏈表名,

typedef struct node{
    int data;
    struct node *next;
}LINKLIST;

這個結點型別的兩個域分別命名為data何next.

理解這個幾個常用的概念

指標:結點的儲存地址

指標變數:存放指標的變數,例如:p,其值是指標

指標所指結點:以該指標為地址進行儲存的結點,引用結點就是獲得指向它的指標.

假定p是指向某結點的指標變數,在非形式語言中 ,通過p引用指向的結點,表示為(p),結點域的引用方式表示為"域名(指標)",例如:data(p)表示引用結點(p)的資料域,next(p)表示引用結點(p)的指標域.在C語言中,結點的引用方式是*p;域引用方式是p->data,p->next.

結點域:結點中的資料(自己的理解)

為了便於操作單鏈表,在單鏈表的首節點前增加一個附加結點,成為頭結點,並且讓頭指標始終指向頭結點,這種形式的單鏈表成為帶頭結點的單鏈表,

頭結點的資料域不存放任何結點資料,必要時可以存放特殊意義的附加資訊,例如標記性資訊,計數資訊等.頭結點的指標域存放首節點的指標,當連結串列為空時,首結點指標的值為空(也就是頭結點的指標域為NULL).

以上就是對單鏈表的定義和相關概念的解釋.

此文介紹來自<<資料結構基礎>>一書的定義.也是學習資料結構的開始,如果大家有好的建議和好的相關資料,希望大家給提出來,共同進步.