資料結構 鍊錶

2021-10-20 05:51:23 字數 3838 閱讀 1791

鍊錶是一種由節點組成的資料結構,每個節點都包含某些資訊及指向鍊錶中另乙個節點的指標。

單向鍊錶

如果序列中的節點只包含指向後繼節點的鏈結,則為單向鍊錶。鍊錶中的最後乙個節點可以通過空指標識別。

template<

class

type

>

class

onewaylinkednode

onewaylinkednode

(type info, onewaylinkednode

*next=0)

:m_info

(info)

,m_next

(next)

onewaylinkednode

*m_next;

type m_info;

};

template<

class

type

>

class

onewaylinkedlist

~onewaylinkedlist()

; bool isempty()

void

addtohead

(type info)

;void

addtotail

(type info)

; type deletefromhead()

; type deletefromtail()

;void

deletenode

(type info)

; bool isinlist

(type info)

const

;private

:

onewaylinkednode

*m_head,

*m_tail;

};

template<

class

type

>

onewaylinkedlist::

~onewaylinkedlist()

}template<

class

type

>

void onewaylinkedlist::

addtohead

(type info)

}template<

class

type

>

void onewaylinkedlist::

addtotail

(type info)

else

}/* 從鍊錶中刪除節點未考慮鍊錶為空的情況,需在呼叫刪除節點函式前,對鍊錶是否為空進行判斷 */

template<

class

type

>

type onewaylinkedlist::

deletefromhead()

else

delete temp;

return info;

}template<

class

type

>

type onewaylinkedlist::

deletefromtail()

else

delete m_tail;

m_tail=temp;

m_tail-

>m_next=0;

}return info;

}template<

class

type

>

void onewaylinkedlist::

deletenode

(type info)

else

if(m_head-

>m_info==info)

else

if(temp!=0)

delete temp;}}

}template<

class

type

>

bool onewaylinkedlist::

isinlist

(type info)

const

return

(temp!=0)

;}

雙向鍊錶

鍊錶中的每個節點包含兩個指標,乙個指向前驅,乙個指向後繼,稱為雙向鍊錶。

template<

class

type

>

class

doublelinkednode

doublelinkednode

(type info, doublelinkednode

*prev=

0, doublelinkednode

*next=0)

:m_info

(info)

,m_prev

(prev)

,m_next

(next)

type m_info;

doublelinkednode

*m_prev,

*m_next;

};

template<

class

type

>

class

doublelinkedlist

void

addtotail

(type info)

; type deletefromtail()

;/*~doublelinkedlist();

bool isempty()

void addtohead(type info);

type deletefromhead();

void deletenode(type info);

bool isinlist(type info) const;

*/private

:

doublelinkednode

*m_head,

*m_tail;

};

template<

class

type

>

void doublelinkedlist::

addtotail

(type info)

else

*/if(m_tail!=0)

else

}/* 從鍊錶中刪除節點未考慮鍊錶為空的情況,需在呼叫刪除節點函式前,對鍊錶是否為空進行判斷 */

template<

class

type

>

type doublelinkedlist::

deletefromtail()

else

return info;

}

迴圈單向鍊錶

在迴圈單向鍊錶的尾部新增元素

template<

class

type

>

void circlelinkedlist::

addtotail

(type info)

else

}

鍊錶中可以儲存任意資料型別,當儲存使用者定義的資料型別時,該型別必須包含乙個預設建構函式以初始化新的節點,否則編譯器無法編譯其引數由預設建構函式初始化的成員函式

陣列的優點是隨機訪問和空間,在固定訪問某些元素,且結構的改變才是演算法的核心時,考慮使用鍊錶

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...

資料結構 鍊錶

鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...

資料結構 鍊錶

一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...