《C++STL-數(shù)據結構與算法實現(xiàn)》課件第二章_第1頁
《C++STL-數(shù)據結構與算法實現(xiàn)》課件第二章_第2頁
《C++STL-數(shù)據結構與算法實現(xiàn)》課件第二章_第3頁
《C++STL-數(shù)據結構與算法實現(xiàn)》課件第二章_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

概念理解題:泛型編程:編寫一般化并可重復使用的算法,C++通過使用模板template技術來實現(xiàn)函數(shù)模板:函數(shù)的模子,不指定特定的數(shù)據結構或對象類型,可用于生成若干邏輯相同,功能類似、參數(shù)類型和返回類型不同的函數(shù)。使用template<classT>或template<typenameT>聲明泛型參數(shù)T,在函數(shù)中使用泛型參數(shù)替代原有參數(shù),即為模板函數(shù)全特化:對模板的全部類型參數(shù)進行特化偏特化:對模板的部分類型參數(shù)進行特化 函數(shù)模板偏特化和函數(shù)重載決策的矛盾函數(shù)模板:將數(shù)據類型參數(shù)化后用于定義和產生各類模板函數(shù)的“模子”模板函數(shù):指代具體函數(shù),由函數(shù)模板實例化生成類模板:將數(shù)據類型參數(shù)化后用于定義和產生模板類的“模子”模板類:類模板實例化后生成的具體類指定模板參數(shù)的類型,實例化模板類,再通過該模板類完成對象的生成。如vector<int>v;首先給模板參數(shù)賦值為int,再用得到的這個模板類去定義生成一個存放int數(shù)據的動態(tài)數(shù)組對象v函數(shù)模板函數(shù)模板重載模板特化參數(shù)類型不同不同相同參數(shù)個數(shù)相同不同相同函數(shù)體相同相同相同上機練習題1、2題(略)3.template<classT>classMyQueue{private://storeelementsvector<T>data;//apointertoindicatethestartpositionintp_start;public:MyQueue(){p_start=0;}/**Insertanelementintothequeue.Returntrueiftheoperationissuccessful.*/boolenQueue(Tx){data.push_back(x);returntrue;}/**Deleteanelementfromthequeue.Returntrueiftheoperationissuccessful.*/booldeQueue(){if(isEmpty()){returnfalse;}p_start++;returntrue;};/**Getthefrontitemfromthequeue.*/TFront(){returndata[p_start];};/**Checkswhetherthequeueisemptyornot.*/boolisEmpty(){returnp_start>=data.size();}};答案供參考,不唯一4.template<typenameT>structNode{Tkey;Node<T>*next;Node(intk,Node*npt=nullptr):key(k),next(npt){};};

template<typenameT>classList{public:List();~List();voidinsert(Node<T>*node);//插入節(jié)點voiderase();//刪除第一個元素boolsearch(Tx);//查找鏈表中是否存在元素xprivate:Node<T>*head;};

template<typenameT>List<T>::List(){head=nullptr;}

template<typenameT>List<T>::~List(){while(head!=nullptr){Node<T>*t=head->next;deletehead;head=t;}}

template<typenameT>voidList<T>::insert(Node<T>*node){//鏈表為空的情況if(head==nullptr){head=node;return;}

//要插入的元素最大的情況if(node->key>head->key){Node<T>t=head;head=node;head->next=t;return;}

Node<T>*cur=head;Node<T>*pre=nullptr;//找到第一個比自己小的節(jié)點while(cur!=nullptr&&node->key<cur->key)//若當前節(jié)點元素>要插入的節(jié)點元素,則找下一節(jié)點{pre=cur;cur=cur->next;}//沒有比自己小的,則尾部插入if(cur==nullptr){pre->next=node;node->next=nullptr;return;}//中間插入的情況pre->next=node;node->next=cur;return;}

template<typenameT>voidList<T>::erase(){head=head->next;}

template<typenameT>boolList<T>::search(Tx){Node<T>*cur

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論