//鍊錶節點
templateclass linknode
;//鍊錶
templateclass linklist
//指定位置插入
void inset_linklist(int pos, t data)
//建立新的節點
linknode* newnode = new linknode;
newnode->data = data;
newnode->next = null;
//新節點入鍊錶
linknode* pcurrent = &this->header;
for (int i = 0; i < pos; ++i)
newnode->next = pcurrent->next;
pcurrent->next = newnode;
++this->size;
} //頭部插入
void push_front(t data)
//尾部插入
void push_back(t data)
//指定位置刪除
void removebypos(int pos)
//找到要刪除位置的前乙個節點
linknode* pcurrent = &this->header;
for (int i = 0; i < pos; ++i)
linknode* pdel = pcurrent->next;
pcurrent->next = pdel->next;//把刪除節點位置的前乙個節點和刪除節點位置的後乙個節點連線起來
delete pdel;
--this->size;
} //頭刪
void remove_front()
removebypos(0);
} //尾刪
void remove_back()
removebypos(this->size - 1);
} //獲得鍊錶大小
int size_linklist()
//值刪除
void removebyval(t data)
//輔助指標
linknode* pcurrent = &this->header;
linknode* pdel = pcurrent->next;
while (pdel != null)
pcurrent = pdel;
pdel = pdel->next;
} }//列印鍊錶,函式模板
templatevoid print_llist(myprint print_llist) }
public:
linknodeheader;
int size;
};template_linklist.cpp
#define _crt_secure_no_warnings
#includeusing namespace std;
#include"template_linklist.hpp"
#include class person
;//為節點的類模板t data提供預設建構函式
person(string name, int age)
bool operator==(const person& p)//過載等於,因為在值刪除函式中使用了==符號
public:
string name;
int age;
};void print_list(person& p )
列印結果
資料結構 最小堆的類模板實現
堆資料結構是一種陣列物件,它可以被視為一科完全二叉樹結構。它的特點是父節點的值大於 小於 兩個子節點的值 分別稱為最大堆和最小堆 它常用於管理演算法執行過程中的資訊,應用場景包括堆排序,優先佇列等。1 根結點若有子樹,則子樹一定也是堆。2 根結點一定大於 或小於 子結點。因為要求堆必須是完全二叉樹,...
C 模板實現鍊錶佇列
佇列是一種十分常見的資料結構,具有先進先出的特點.佇列在處理訊息時,非常常用.本文利用c 模板,鍊錶來實現乙個簡單的佇列.解讀如下 1.queuelinklist標頭檔案.queuelinklist私有繼承於linklist,因為做為佇列中的核心鍊錶資料結構,我們只希望其具有尾插入,頭取出的方法.採...
常用資料結構演算法 c 模板實現
由於大三下學期了,快要找工作了,所以最近在複習一些學過的內容,以下是這幾天寫的資料結構裡面的一些常用的演算法,僅供參考。不過在平時做專案的時候,建議採用stl和boost裡面現成的東西,而不要自己去實現他們。另外,由於國內外講解資料結構和演算法的書籍很多,內容大多重複,所以筆者並沒有自習講解資料結構...