資料結構 線性表 鏈式表(單鏈表)

2022-02-27 05:46:02 字數 2571 閱讀 2013

不要求邏輯上相鄰的元素在物理儲存上相鄰,使用指標來表示元素之間的邏輯關係。

優點:

對線性表進行插入刪除操作時不需要移動大量的元素,只需要修改對應元素的指標域即可,方便省時;

不需要為整個線性鍊錶提前分配足夠的儲存空間;

當節點不再使用時,可以將儲存空間進行及時的**。

template class listnode //預設建構函式

listnode(listnode(const type &item, listnode*next1 = nullptr))

//帶引數的建構函式

type data; //節點資料域

listnode*next; //節點指標域

指示鍊錶的第乙個結點的指標稱為頭指標head,最後乙個結點沒有後繼結點,指標域為空null或^,對於僅含有表頭元素的鍊錶為空表。

鍊錶有三種型別,單鏈表、迴圈鍊錶與雙向鍊錶三種。

抽象鍊錶類的定義如下:

template class ablinklist :public ablist

listnode*getnext(listnode&n)

type get(int i); //獲得第i元素

bool set(type x, int i); //設定i處元素

listnode*find(int i); //獲得i處元素位置

listnode*find1(type value); //獲得元素value位置

void makeempty();

virtual bool insert(type value, int i) = 0;

virtual bool remove(int i) = 0;

virtual bool remove1(type value) =0;

protected:

listnode*head;

};

設定函式

//節點元素設定函式

template bool ablinklist::set(type x, int i)

取值函式

//獲得第i元素值函式

template type ablinklist::get(int i)

清空鍊錶函式

//清空鍊錶函式

templatevoid ablinklist::makeempty()

length = 0;

}

搜尋資料元素值為value的結點

//獲得元素value位置

templatelistnode*ablinklist::find1(type value)

定位函式

//獲得i處元素位置

templatelistnode*ablinklist::find(int i)

return p;

}

用c語言描述:

插入操作:在值為a的結點前面插入值為x的結點,若煉表為空,則x為其頭結點,若表中無a元素,在將x插入鍊錶末尾。

//將元素x對應為鏈**式

node *getlistnode(int x)

//資料域x,指標域空

return(s);

}node *insertlist(node *head,int a,int x)

if (head->data==a)

q=head;//其它情況,進行查詢

while (q->next!=null && q->next->data!=a)

q=q->next;

s->next=q->next; //插入

q->next=s;

return(head); //返回頭指標

}

刪除操作:在頭指標為head的鍊錶中將值為a的結點刪除

q=head; //其它情況,進行查詢

while (q->next!=null && q->next->data!=a)

q=q->next;

if (q->next!=null);//找到,刪除

return(head); //返回頭指標

}

資料結構 線性表鏈式儲存 鍊錶 單鏈表

定義 單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶特點 根據線性表的長度動態的申請儲存空間,以解決順序儲...

資料結構 線性表鏈式儲存

對於線性鍊錶,有兩種表示方法,一種是包含頭節點的情況,如下圖 一種是不包含頭節點的情況,如下圖 本文中對線性鍊錶的表示,利用的是帶頭節點的定義方式。使用c 實現了線性鍊錶建立,初始化,刪除,插入,清空,遍歷,有序鍊錶合併等操作。煉表頭 頭指標 頭結點 煉表頭 指的是線性表第乙個元素所在結點 頭指標 ...

資料結構 線性表(鏈式儲存)

1 順序表 需要一片連續的記憶體空間,成員可以隨機訪問,訪問效率高 插入刪除資料存在資料搬移的現象,效率低 儲存密度高 鍊錶的特點 不需要連續的記憶體空間,不能隨機訪問元素,訪問效率低 插入刪除資料不存在資料搬移的現象,效率高 儲存密度比較低 2 無頭鍊錶 第乙個節點為資料節點,加入刪除第乙個節點,...