1. 程式人生 > >線性表的鏈式存儲結構

線性表的鏈式存儲結構

數據結構。鏈表 鏈式存儲結構

線性表從物理結構上分,有順序存儲結構和鏈式存儲結構兩種。既然有了順序存儲結構,又何必再有一個鏈式存儲結構呢?原因就在於,順序存儲結構在存儲大量的元素,對這些元素進行插入或這刪除操作時,會浪費大量的時間。因為,采用順序存儲結構,這些元素的地址都是相鄰的,如果刪除或者插入一個元素,則需對其後的所有元素進行移動,故非常的浪費運行時間,運行效率不高。

鏈式存儲結構卻避免了這樣的問題。因為,鏈式存儲並不需要去關心元素存在哪個位置,也就是說,鏈式存儲可以讓元素存於內存的任意位置,而我只要知道元素的地址即可。如下圖所示:

技術分享

這種存儲方式就完全不需要各個元素是相鄰的位置,只需要知道每一個元素的地址即可。通過上圖可以發現,采用了鏈式存儲結構的元素之間互相串聯,就像是一個表,所以,將這種形式稱為鏈表。那麽,可以將每一個數據所占的單元叫做,結點。因為,我們不僅需要知道存儲的元素值,還需要知道元素的地址,因此,一個結點就是由一個數據和存放數據的地址,兩部分組成。

那麽,總結一下就是,鏈表是由一個個結點構成,而每一個結點是由一個存放數據的數據域和一個存放數據地址的地址域構成。

這個地址域存放的並不是當前元素的地址,而是,下一個元素的地址。

代碼如下:

typedef struct Node{
    
    ElemType data;
    struct Node *next;

}Node;

typedef struct Node *LinkList;


本文出自 “梵高說我腦子有病” 博客,請務必保留此出處http://chen0547.blog.51cto.com/12489941/1965770

線性表的鏈式存儲結構