




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4編程題4.1 設(shè)計(jì)一個(gè)函數(shù)模板,其中包括數(shù)據(jù)成員T an 以及對(duì)其進(jìn)行排序的成員函數(shù) sort( )模板參數(shù) T 可實(shí)例化成字符串。#include <iostream>#include <string>using namespace std;template<typename T>void Sort(T* a,int n)int i,j;T t;for(i=0;i<n-1;i+) for(j=0;j<n-i-1;j+)if (aj>aj+1) t=aj;aj=aj+1;aj+1=t; template<typename T>
2、void Print(T* a,int n) int i;for(i=0;i<n;i+) cout<<ai<<" "cout<<endl;int main()string Str10="Zhang","Li","Wang","Qian","Zhao","Wu","Xu","Tang","Shen","Liang"int Int8=20,
3、12,0,-5,9,-18,6,11;double Dou7=3.07,8.12,-0.45,6,10,-9,7.29;Sort<string>(Str,10);Sort<int>(Int,8);Sort<double>(Dou,7);Print(Str,10);Print(Int,8);Print(Dou,7);return 0;4.2 設(shè)計(jì)一個(gè)類模板,其中包括數(shù)據(jù)成員 T an 以及在其中進(jìn)行查找數(shù)據(jù)元素的函數(shù) int search(T) 模板參數(shù) T 可實(shí)例化成字符串。#include <iostream>using namespace s
4、td;template<typename T,int n>class Aint size;T* element; public:A();A();int Search(T);void SetElement(int index,const T& value); ;template<typename T,int n>A<T,n>:A() size=n>1? n:1;element=new Tsize;template<typename T,int n>A<T,n>:A()delete element;template<t
5、ypename T,int n>int A<T,n>:Search(T t)int i; for(i=0;i<size;i+) if(elementi=t) return i;return -1;template<typename T,int n>void A<T,n>:SetElement(int index,const T& value) elementindex=value;int main()A<int,5> intAry; / 用 int 實(shí)例化,建立模板類對(duì)象 A<double,10> douAry;/
6、 用 double 實(shí)例化,建立模板類對(duì)象 int i;for(i=0;i<5;i+) intAry.SetElement(i,i+3);for(i=0;i<10;i+) douAry.SetElement(i,(i+i)*0.35);i=intAry.Search(7); if(i>=0)cout<<i<<endl; i=douAry.Search(0.7); if(i>=0)cout<<i<<endl; return 0;4.3 設(shè)計(jì)一個(gè)單向鏈表類模板,節(jié)點(diǎn)數(shù)據(jù)域中數(shù)據(jù)從小到大排列,并設(shè)計(jì)插入、刪除節(jié)點(diǎn)的 成員函數(shù)。#
7、include<iostream>using namespace std;template<typename T>class List;template<typename T>class Node/T info;Node<T> *link;public:Node();Node(const T & data);/ friend class List<T> ; template <typename T> Node<T>:Node()link=NULL; template <typename T>
8、 Node<T>:Node(const T & data) info=data;link=NULL;/ 定義鏈表類 template<typename T>class ListNode<T> *head; / public:List();/List();/void MakeEmpty();數(shù)據(jù)域指針域/生成一般結(jié)點(diǎn)的構(gòu)造函數(shù)生成頭結(jié)點(diǎn)的構(gòu)造函數(shù)鏈表頭指針和尾指針Node<T>* Find(T data); / void PrintList(); / void InsertOrder(Node<T> *p); / Node<
9、;T>* CreatNode(T data); / Node<T>* DeleteNode(Node<T>* p); / ; template<typename T>List<T>:List()head=new Node<T>(-9999);/ 頭結(jié)點(diǎn), template<typename T>List<T>:List()MakeEmpty(); delete head; template<typename T>void List<T>:MakeEmpty()Node<T&g
10、t; *tempP;while(head->link!=NULL) tempP=head->link; head->link=tempP->link; / delete tempP;/構(gòu)造函數(shù),生成頭結(jié)點(diǎn) ( 空鏈表 )析構(gòu)函數(shù)清空一個(gè)鏈表,只余表頭結(jié)點(diǎn)搜索數(shù)據(jù)域與 data 相同的結(jié)點(diǎn),返回該結(jié)點(diǎn)的地址 打印鏈表的數(shù)據(jù)域按升序生成鏈表創(chuàng)建一個(gè)結(jié)點(diǎn) ( 孤立結(jié)點(diǎn) )刪除指定結(jié)點(diǎn)最小的數(shù)據(jù)從小到大插入把頭結(jié)點(diǎn)后的第一個(gè)節(jié)點(diǎn)從鏈中脫離刪除 (釋放 )脫離下來的結(jié)點(diǎn)template<typename T> Node<T>* List<T>:
11、Find(T data) Node<T> *tempP=head->link;while(tempP!=NULL && tempP->info!=data) tempP=tempP->link;template<typename T>void List<T>:PrintList()Node<T>* tempP=head->link; while(tempP!=NULL) cout<<tempP->info<<'t' tempP=tempP->link; c
12、out<<endl;template<typename T>void List<T>:InsertOrder(Node<T> *p)Node<T> *tempP=head,*tempQ=head; /tempQ 指向 tempP 前面的一個(gè)節(jié)點(diǎn) while(tempP!=NULL)/ 找第一個(gè)比插入結(jié)點(diǎn)大的結(jié)點(diǎn), 由 tempP 指向if(p->info<tempP->info)break; tempQ=tempP; tempP=tempP->link;p->link=tempP; tempQ->l
13、ink=p;建立新節(jié)點(diǎn) template<typename T>Node<T>* List<T>:CreatNode(T data)/Node<T>*tempP=new Node<T>(data); return tempP;template<typename T>Node<T>* List<T>:DeleteNode(Node<T>* p) Node<T>* tempP=head->link,*tempQ=head,*tempC; while(tempP!=NULL
14、&& tempP!=p) tempQ=tempP;tempP=tempP->link; tempC=tempP; tempQ->link=tempP->link; return tempC;int main() Node<int> * P1;List<int> list1;int a10=20,12,0,-5,9,-18,6,11,5,3,i,j; for(i=0;i<10;i+)P1=list1.CreatNode(ai); list1.InsertOrder(P1); list1.PrintList();cout<<
15、;" 請(qǐng)輸入一個(gè)要求刪除的整數(shù) "<<endl;cin>>j;P1=list1.Find(j);if(P1!=NULL)P1=list1.DeleteNode(P1);delete P1;list1.PrintList();else cout<<" 未找到 "<<endl;cout<<" 請(qǐng)輸入一個(gè)要求插入的整數(shù) "<<endl; cin>>j;P1=list1.CreatNode(j); list1.InsertOrder(P1);list1.Pri
16、ntList();list1.MakeEmpty();/ 清空 list1list1.PrintList();return 0;4.4 為單鏈表類模板增加一個(gè)復(fù)制構(gòu)造函數(shù)和賦值運(yùn)算符 (= 在上題基礎(chǔ)上, List 類增加一個(gè)復(fù)制構(gòu)造函數(shù)和賦值運(yùn)算符 template<typename T>List<T>:List(List& l) head=new Node<T>(-9999);/ 現(xiàn)建立頭結(jié)點(diǎn) Node<T>* tempP=l.head->link,*tempC; while(tempP!=NULL) tempC=CreatNo
17、de(tempP->info); InsertAfter(tempC); tempP=tempP->link;template<typename T>List<T>& List<T>:operator=(List& l) MakeEmpty();/ 先釋放原來鏈表的數(shù)據(jù)結(jié)點(diǎn) Node<T>* tempP=l.head->link,*tempC; while(tempP!=NULL) tempC=CreatNode(tempP->info); InsertAfter(tempC);tempP=tempP-&g
18、t;link;return *this;int main() Node<int> * P1; List<int> list1,list2;int a10=20,12,0,-5,9,-18,6,11,5,3,i,j; for(i=0;i<10;i+)P1=list1.CreatNode(ai); list1.InsertOrder(P1);list1.PrintList();cout<<" 請(qǐng)輸入一個(gè)要求刪除的整數(shù) cin>>j;P1=list1.Find(j);if(P1!=NULL)P1=list1.DeleteNode(P1); delete P1;list1.PrintList();else cout
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫買樹木合同范本
- 2025年浙江貨運(yùn)從業(yè)資格證考試試題及答案詳解
- 2025年巴彥淖爾c1貨運(yùn)從業(yè)資格證考試內(nèi)容
- 代理記賬業(yè)務(wù)合同范本
- 繡花施工方案
- 專屬定制鞋合同范本
- 公司收購股合同范例
- 養(yǎng)殖土地借用合同范本
- 分包責(zé)任合同范本
- 做餐飲合伙合同范本
- GB 16780-2021水泥單位產(chǎn)品能源消耗限額
- 全面推進(jìn)依法行政課件
- 政務(wù)服務(wù)一網(wǎng)通辦平臺(tái)解決方案-最新
- 兒童氣管插管醫(yī)學(xué)課件
- 內(nèi)燃機(jī)車無火回送操作方法
- 第十四屆全國交通運(yùn)輸行業(yè)職業(yè)技能競(jìng)賽(公路收費(fèi)及監(jiān)控員)賽項(xiàng)題庫-上(單選題匯總-共3部分-1)
- 2019年遠(yuǎn)程開具電子處方管理制度及操作規(guī)程版
- 奧太焊機(jī)維修教材MZ系列
- 哈利波特和死亡圣器PPT培訓(xùn)課件
- 財(cái)務(wù)會(huì)計(jì)實(shí)務(wù)教學(xué)課件匯總?cè)纂娮咏贪?完整版)
- JJG 818-2018磁性、電渦流式覆層厚度測(cè)量?jī)x-(高清現(xiàn)行)
評(píng)論
0/150
提交評(píng)論