[tags] c++總結
1. 節點結構體
struct doulistnode
};
2. 類宣告class doulist ;
(1)建構函式
doulist::doulist()
doulist::doulist(const doulist& src)
**注意拷貝建構函式中要寫m_head = null; m_tail = null;
每次定義乙個成員函式都要考慮特殊值和邊界情況
此處呼叫了過載運算子=
拷貝建構函式是關鍵,每次出現記憶體問題都應當重點檢查拷貝建構函式(2)過載運算子=
void doulist::operator
=(const doulist& other)
m_tail = q;
}
(3)清空,析構中直接呼叫clear()即可
void doulist::clear()
} m_head = m_tail = null;
}doulist::~doulist()
(4)空鍊錶的判斷,當頭節點和尾節點為同一節點時為空
bool doulist::empty() const
(5)列印的形式
string doulist::to_str() const else
result +=
"]";
} return result;
}
(6)獲得元素(m_head->elem 和m_tail->elem)
int doulist::front() const
int doulist::back() const
(7)從鍊錶的頭插入元素(重要)
void doulist::push_front(const int& e)
doulistnode* t =
new doulistnode(e, null, m_head);
m_head->prev = t;
m_head = t;
}
(8)從鍊錶的尾插入元素(重要)
void doulist::push_back(const int& e)
doulistnode* t =
new doulistnode(e, m_tail, null);
m_tail->next = t;
m_tail = t;
}
(9)從頭pop(重要)
void doulist::pop_front()
(10)從尾pop(重要)
void doulist::pop_back()
(11)友元函式
std::ostream& operator
<<(std::ostream& out, const doulist& list)
記得不能寫成:ostream& doulist::operator<<(std::ostream& out, const doulist& list)
會報錯:
『std::ostream& doulist::operator<<(std::ostream&, const doulist&)』 must take exactly one argument
因為友元函式不屬於該類
在寫每乙個成員函式的時候首先應該想清楚特殊情況和邊界情況, 盡量避免出現過多的記憶體問題
學會利用已有的成員函式,增加**的可讀性,同時也簡化**
雙鏈表(Double Linked LIst
雙鏈表屬於鍊錶的一種,有兩個指標域,分別指向直接後繼和直接前驅。所有在遍歷雙向鍊錶時,從任意乙個節點開始,都可以很方便的訪問它的前驅節點和後繼節點。使用這種方式解決了單鏈表中不能使用反向遍歷的問題。在雙鏈表中,每個節點包含三個部分 struct node head null 基本的運算形式 增加 刪...
mysql 雙向鍊錶 雙向鍊錶
雙向鍊錶是鍊錶變型,相比於單鏈表導航或者是向前和向後的兩種方式。以下是重要的術語來理解雙向鍊錶的概念 link 鍊錶的每個鏈路儲存資料稱為乙個元素。linkedlist linkedlist包含連線鏈結到名為首先第乙個鏈結,並稱為最後的最後乙個鏈結 last 雙向鍊錶表示 按照如上圖中所示,以下是要...
雙向鍊錶 3 反轉雙向鍊錶
雙向鍊錶的反轉過程,可以參考下面的例圖。a 原始雙向鍊錶 b 反轉後的雙向鍊錶 下面是乙個用於反轉雙向鍊錶的簡單方法。所需要做的事情就是交換每個節點的前向指標和後向指標,然後調整鍊錶的頭指標和尾指標。include struct node 對鍊錶進行反轉 void reverse node head...