c 利用模版模擬實現鍊錶list

2021-10-04 03:49:19 字數 3916 閱讀 3914

最近在學習《資料結構與演算法分析c++描述第三版》時,書中的list在編譯時會報錯,我在這裡已經進行了修改,而且為了方便**,把內部類放在類外部實現,經過了實際的測試。**具體如下:

#include

using

namespace std;

template

<

typename object>

class

list

const_iterator begin()

const

iterator end()

const_iterator end()

const

intsize()

const

bool

empty()

const

void

clear()

object&

front()

const object &

front()

const

object&

back()

const object &

back()

const

void

push_front

(const object & x)

void

push_back

(const object & x)

void

pop_front()

void

pop_back()

iterator insert

(iterator itr,

const object & x)

; iterator erase

(iterator itr)

; iterator erase

(iterator start, iterator end)

;private

:int thesize;

node* head;

node* tail;

void

init()

;};// 這裡是資料結構體

template

<

typename object>

struct list

::node};

template

<

typename object>

class

list

::const_iterator

const object &

operator*(

)const

// 前置++

const_iterator &

operator++(

)// 後置++

const_iterator operator++(

int)

bool

operator==(

const const_iterator & rhs)

bool

operator!=(

const const_iterator & rhs)

public

: _node* current;

object &

retrieve()

const

const_iterator

(_node *p)

:current

(p)friend

class

list

;};template

<

typename object>

class

list

::iterator :

public list

::const_iterator

object &

operator*(

)const object &

operator*(

)const

// 前置++

iterator &

operator++(

)// 前置--

iterator &

operator--(

) iterator operator++(

int)

protected

:iterator

(_node *p)

:const_iterator

(p)friend

class

list

;};template

<

typename object>

list

::list()

template

<

typename object>

list::~

list()

template

<

typename object>

list

::list

(const list& rhs)

template

<

typename object>

const list

& list

::operator=(

const list &rhs)

clear()

;for

(const_iterator itr = rhs.

begin()

; itr != rhs.

end();

++itr)

return

*this;}

template

<

typename object>

void list

::init()

template

<

typename object>

typename list

::iterator

list

::insert

(list

::iterator itr,

const object & x)

template

<

typename object>

typename list

::iterator

list

::erase

(list

::iterator itr)

template

<

typename object>

typename list

::iterator

list

::erase

(list

::iterator start, list

::iterator end)

return end;

}

測試**:

#include

using

namespace std;

#include

"list.h"

#include

"printcollection.h"

intmain

(int argc,

char

* ar**)

printcontrainer

(l);

l.pop_back()

; l.

pop_front()

;//printcontrainer>(l);

printcontrainer

(l);

return0;

}

原始碼傳送門:

list.h

testlist.cpp

printcollection.h

C 模擬實現List

雙向鍊錶 include includeusing namespace std typedef nodenode templatestruct node t data 鍊錶中的資料 node pnext 下乙個節點 node ppre 前乙個節點 templateclass list templat...

模擬實現雙向帶頭迴圈鍊錶list

include using namespace std list實現 雙向帶頭迴圈鍊錶 template class t struct listnode 迭代器型別 template struct listiterator iterator t operator iterator listitera...

模擬實現鍊錶

該鍊錶實現的功能 1.指定位置之前插入元素 2.列印鍊錶 3.刪除指定元素 4.刪除所有出現的指定元素 5.查詢指定元素 6.對鍊錶進行氣泡排序 7.頭插 8.頭刪 9.尾插 10.尾刪 11.銷毀鍊錶 下面進行分布詳解 plinknode buynode datatype x 為新增節點開闢空間,...