最近在學習《資料結構與演算法分析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 為新增節點開闢空間,...