雙鏈表 迭代器 過載方法 使用類重寫鍊錶方法

2021-10-06 15:40:09 字數 3599 閱讀 3310

node.h

class

node

node

(int val, node* pfront=

nullptr

, node* pnext=

nullptr);

//預設可以寫在宣告中,不要寫在定義中

~node()

;private

:int val;

node* pfront;

//前驅:指向前乙個節點

node* pnext;

//後驅:指向後乙個節點

};

node.cpp
#include

"node.h"

node::

node

(int val, node* pfront, node* pnext)

:val

(val)

,pfront

(pfront)

,pnext

(pnext)

node::

~node()

2.1建構函式
iterator::

iterator

(node* pnode)

:pnode

(pnode)

2.2過載後置++
iterator iterator::

operator++(

int)

2.3過載前置++
iterator& iterator::

operator++(

)

2.4過載後置–
iterator iterator::

operator--(

int)

2.5過載前置–
iterator& iterator::

operator--(

)

2.6過載*
int

& iterator::

operator*(

)

2.7過載!=
bool iterator::

operator!=(

const iterator& it)

2.8過載==
bool iterator::

operator==(

const iterator& it)

const

2.9過載+
iterator iterator::

operator+(

int val)

return it;

}

2:資料預設成員函式

3.1:建構函式

list::

list()

:phead

(new

node()

),prear

(new

node()

)

3.2:輸出函式
void list::

printlist()

}

3.3:插入乙個新節點–前面
void list::

push_front

(const

int& val)

3.4:插入乙個新節點–後面
void list::

push_back

(const

int& val)

3.5:刪除最後乙個節點
void list::

pop_back()

3.6:刪除第乙個節點
void list::

pop_front()

3.7:雙向鍊錶翻轉
void list::

reverse()

//交換輔助頭和輔助尾

node* ptemp = phead;

phead = prear;

prear = ptemp;

}

3.8:指定刪除
iterator list::

erase

(iterator loc)

3.9:刪除乙個區間
iterator list::

erase

(iterator start, iterator end)

return it;

}

3.10:獲取到頭節點
iterator list::

begin()

3.11:獲取到尾節點
iterator list::

end(

)

2.12:清空鍊錶
void list::

clear()

2.13:插入元素
iterator list::

insert

(iterator it,

const

int& val)

2.14:刪除相鄰的重複元素
void list::

deladjacenttorepeat()

pnode = pnode-

>pnext;

}}

2.15:鍊錶排序
void list::

sort()

}}}

2.16:鍊錶合併
void list::

merge

(list &list)

else}if

(pnode-

>pnext == prear)

}

//新增元素

list li;

for(

int i =

1; i <=

10; i++

) li.

printlist()

; li.

pop_back()

;//刪除最後乙個

cout << endl;

li.printlist()

; cout << endl;

//iterator it = li.begin();

刪除第乙個

//cout << endl;

//iterator it = li.begin();

//iterator itt = li.begin();

//itt++;

// li.erase(it);//刪除乙個區間

//cout << endl;

li.clear()

;//清空鍊錶

刪除第乙個

//cout << endl;

php方法過載方法重寫 PHP類方法重寫原則

可能我們日常工作中很少用到這塊知識點,但我還是喜歡把遇到的卻不清楚的知識點摸清 php的類方法重寫規則 1 final修飾的類方法不可被子類重寫 final修飾的類方法不可被子類重寫 即便final private方法無法被繼承 子類仍不能對齊進行重寫 class finalmethod 可繼承不可...

C 抽象類使用及方法重寫與過載

建立乙個抽象類a,該類中包含乙個求兩個數之和抽象方法。建立乙個子類b,在b中重寫求和方法,且使用方法過載使得方法可以 分別計算整數 雙精度和字串。using system using system.collections.generic using system.linq using system....

C 中繼承實現父類方法 重寫 過載

c 中子類重寫父類方法的幾種情況,關鍵字 virtual abstract override new。此處不說abstract,以後補充 virtual 不是必須被子類重寫的方法,父類必須給出實現,子類可以重寫 使用override,new,或無特殊標誌的普通方法 也可以不重寫該方法。new 重寫父...