簡易單鏈表模版(暫定最終版本)

2021-08-26 00:00:21 字數 1441 閱讀 5332

自己寫的乙個單鏈表模版,模版的實現和定義是不可以分開兩個檔案寫的 和平時寫的類的不太一樣 這個要注意,一開始沒注意到這個 就出現了那個最討厭的 unresolve external symbol 的錯誤 下面是** 功能是一些比較常見的功能

這個是經過修改完善後的乙個最終版本,以後有新想法 會再新增進去

mylist.h檔案

#includetemplateclass my_list; templateclass node //節點類 node(t d) friend my_list;//宣告為友元,在鍊錶類中訪問節點類的私有成員 }; templateclass my_list ~my_list() void insert_front(node*p)//頭插入 void insert_rear(node*p)//尾插入 bool empty()//判斷鍊錶是否為空 int length()//計算表長 return size; } bool retrive(int k, t& x)//由x來返回k位置處的值 if(!p && pos<=k) return false; else } int locate(const t& x)//返回x在表中位置,找不到返回0 if(!p || p->data!=x) pos=0; return pos; } bool insert(int k,t x)//在k位置後面插入x else temp->next=p->next; p->next=temp; } return true; } bool erase(int k,t& x)//刪除k位置的節點,將k處的值給x while(inext; } if(!p->next && i<=k-1) return false; else } void print_list() const//輸出表 cout<*p=head->next; while(p) } void select_sort()//用選擇排序進行排序按公升序排列 q=q->next; } if(t1!=p->data) p=p->next; } flag=true; } void unique()//刪除值重複的節點 p=p->next; } } bool inverse()//逆置整條鏈 head->next=tail; return true; } }; templatebool my_list::flag=false;

下面是乙個測試** mian.cpp

#include"mylist.h" int main() list.print_list(); p=list.create(9); list.insert_front(p); list.print_list(); cout<<"表長為:"<>pos; if(list.retrive(pos,x)) cout<>t; xx=list.locate(t); if(xx) cout<>pos; cout<<"值:"; cin>>t; if(list.insert(pos,t)) cout<<"insert is successful."<>pos; if(list.erase(pos,tt)) cout<

單鏈表(合併單鏈表)

單鏈表遍歷 單鏈表遍歷是從單鏈表頭指標head開始訪問,沿著next指標所指示的方向依次訪問每乙個結點,且每個結點只能訪問依次,直到最後乙個結點為止。遍歷時注意,不要改變head指標的指向。因此一般設定另外的乙個指標變數如p,p從head開始依次訪問乙個結點,直到鍊錶結束,此時p null,完成依次...

單鏈表之排序單鏈表

package list public class sortedsinglylist extends singlylist 將values陣列中的所有物件按值大小插入 public sortedsinglylist t values 過載深拷貝,由單鏈表構建排序單鏈表 public sortedsi...

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...