資料結構(三)之線性表(鏈式表示和實現)

2021-10-02 05:13:33 字數 2264 閱讀 1533

線性表的順序儲存結構的特點是邏輯關係上相鄰的兩個元素在物理位置上也相鄰,因此可以隨機訪問表中的任意元素,它的儲存位置可用乙個簡單的、直觀的公式來表示然而,從另一方面來看,這個特點也鑄成了這種結構的弱點,在做插入或刪除操作時,需要大量的移動元素,那麼我們來討論一下另一種表示方法----鏈式儲存結構,由於它不要求邏輯上相鄰的元素在物理位置上也相鄰,因此他沒有順序儲存結構所具有的弱點,但同時也失去了順序錶可隨機訪問的優點.

線性鍊錶的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素(這組儲存單元可以是連續的,也可以是不連續的).因此為了表示每個資料元素ai與其直接後繼資料元素ai+1之間的邏輯關係,對資料元素ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊(即直接後繼的儲存位置).這兩部分資訊組成資料ai的儲存映像,稱為節點.它包括兩個域,其中儲存資料元素資訊的域稱為資料域;儲存直接後繼儲存位置的域成為指標域,指標域中儲存的資訊稱作指標.n個節點(ai(i<=i <= n)的儲存映像)鏈結成乙個鍊錶,即為線性表.

(a1,a2,…,an)

的鏈式儲存結構.又由於此鍊錶的每個節點中只包含乙個指標域,故有稱為線性鍊錶單鏈表

用線性鏈表示線性表時,資料元素之間的邏輯關係是由節點中的指標指示的.換句話說,指標為元素之間的邏輯關係的映像,則邏輯上相鄰的兩個元素其儲存的物理位置不要求緊鄰,由此這種儲存結構為非順序映像鏈式映像

}補充方法 在某個節點之後 新增乙個 節點

//predata 指的是 在那個節點之後 插入節點

public

void

insert

(t predata,t point)

while

(curr != null)

curr = curr.next;

}}

總結:

這裡利用了物件導向的思想 ,這裡首先需要構建我們的節點物件,節點物件 裡面放了兩個成員變數 乙個是資料乙個是記錄下乙個節點(節點物件)

private

static

class

node

}

通過這個物件那麼我們 就能 得到一串的節點,修改只需找到對應的節點 修改其記錄的下乙個節點即可.

資料結構複習 線性表鏈式表示

include include include using namespace std typedef int elemtype 單鏈表的節點型別 typedef struct lnodelinknode 頭插法建立單鏈表 void createlistf linknode l elemtype a...

資料結構之線性表 鏈式儲存

由線性表的順序儲存可以得知,順序儲存結構有其自身的優點 查詢特別快捷 當然同時存在其自身的缺點 對於插入和刪除時,需要移動大量的指標 所以衍生了鏈式結構來彌補其措施。鏈式儲存是採用動態儲存的方法,其儲存的單元不受限制,既可以是連續的儲存的位址,也可以是非連續的儲存位址,這樣對於經常需要刪除 插入的資...

資料結構之線性表 鏈式儲存結構

鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊,表頭節點不是資料元素。鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊。鍊錶中的最後乙個資料結點,其下一元素指標為空,表示無後繼 煉表頭檔案 linklist.h ifndef linklist h def...