單鏈表定義-(線性表的連結串列儲存結構)
線性表分為:順序儲存結構和連儲存結構
順序儲存結構的優點:
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).
以上就是對單鏈表的定義和相關概念的解釋.
此文介紹來自<<資料結構基礎>>一書的定義.也是學習資料結構的開始,如果大家有好的建議和好的相關資料,希望大家給提出來,共同進步.