![数据结构-C源代码_第1页](http://file4.renrendoc.com/view/0bb031bcbec23f7a61b8494389b2855e/0bb031bcbec23f7a61b8494389b2855e1.gif)
![数据结构-C源代码_第2页](http://file4.renrendoc.com/view/0bb031bcbec23f7a61b8494389b2855e/0bb031bcbec23f7a61b8494389b2855e2.gif)
![数据结构-C源代码_第3页](http://file4.renrendoc.com/view/0bb031bcbec23f7a61b8494389b2855e/0bb031bcbec23f7a61b8494389b2855e3.gif)
![数据结构-C源代码_第4页](http://file4.renrendoc.com/view/0bb031bcbec23f7a61b8494389b2855e/0bb031bcbec23f7a61b8494389b2855e4.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、顺序表Seqlist.hconstintDefaultSize=100;template<typenameTypoclassSeqList{public:SeqList(intsz=DefaultSize):m_nmaxsize(sz),m_ncurrentsize(-l){if(sz>0){m_elements=newType[m_nmaxsize];)〜SeqList(){〜SeqList(){delete[]m_elements;}intLength()const{returnm_ncurrentsize+l;)intFind(Typex)const;intlsElement(Typex)const;intlnsert(Typexjnti);intRemove(Typex);intlsEmpty(){returnm_ncurrentsize==-l;)intlsFull(){//getthelength//findthepositionofx//isitinthelist//insertdata//deletedatareturnm_ncurrentsize==m_nmaxsize-l;)TypeGet(inti){ //gettheithdatafindthereturn i<011i>m_ncurrentsize?(cout«"can'tfindtheelement"«endlzO):m__elements[i];}voidPrint();private:Type*m_elements;constintm_nmaxsize;intm_ncurrentsize;|;template<typenameType>intSeqList<Type>::Find(Typex)const{for(inti=O;i<m_ncurrentsize;i++)if(m_elements[i]==x)returni;cout«Hcan'tfindtheelementyouwanttofind"«endl;return-1;}template<typenameTypointSeqList<Type>::lsElement(Typex)const{if(Find(x)==-l)return0;return1;}template<typenameType>intSeqList<Type>::lnsert(Typex,inti){if(i<0||i>m_ncurrentsize+l||m_ncurrentsize==m_nmaxsize-l){cout«"theoperateisillegal"«endl;return0;}m_ncurrentsize++;for(intj=m_ncurrentsize;j>i;j—){m_elements[j]=m_elements[j-l];}m_elements[i]=x;return1;}template<typenameType>intSeqList<Type>::Remove(Typex){intsize=m_ncurrentsize;for(inti=O;i<m_ncurrentsize;){if(m_elements[i]==x){for(intj=i;j<m_ncurrentsize;j++){m_elements[j]=m_elements[j+l];}m__ncurrentsize-;continue;)i++;}if(size==m_ncurrentsize){cout«"can'tfindtheelementyouwanttoremove"«endl;return0;)return1;} 〃删除所有为X的数template<typenameType>voidSeqList<Type>::Print(){for(inti=O;i<=m_ncurrentsize;i++)cout«i+l«":\t"«m_elements[i]«endl;cout«endl«endl;}Test.cpp#include<iostream>include"SeqList.h"usingnamespacestd;intmain()(SeqList<int>test(15);intarray[15]={2,5,8,l,9,9,7,6,4,3,2,9,7,7,9};for(inti=0;i<15;i++){test.lnsert(array[i],O);}test.lnsert(l,O);cout«(test.Find(0)?"can'tbefound":"Befound")«0«endl«endl;test.Remove(7);test.Print();test.Remove(9);test.Print();test.Remove(O);test.Print();return0;}2、单链表ListNode.htemplate<typenameType>classSingleList;//List类的前视声明template<typenameType>classListNode{private:friendtypenameSingleList<Type>;ListNode():m_pnext(NULL){}ListNode(constTypeitem/ListNode<Type>*next=NULL):m_data(item)/m_pnext(next){}〜ListNode(){m_pnext=NULL;public:TypeGetData();friendostream&operator«<Type>(ostream&zListNode<Type>&);private:Typem_data;ListNode*m_pnext;|;template<typenameType>TypeListNode<Type>::GetData(){returnthis->m_data;}template<typenameType>ostream&operator«(ostream&os,ListNode<Type>&out){os«out.m_data;returnos;|SingleList.hinclude"UstNode.h"template<typenameType>classSingleList{public:SingleList():head(newListNode<Type>()){}~SingleList(){MakeEmptyO;deletehead;}public:voidMakeEmpty(); //makethelistemptyintLength(); //getthelengthListNode<Type>*Find(Typevaluejntn);//findthdnthdatawhichisequaltovalueListNode<Type>*Find(intn);//findthenthdataboollnsert(Typeitemjntn=O);//insertthedatainthenthpositionTypeRemove(intn=O);//removethenthdataboolRemoveAII(Typeitem);//removeallthedatawhichisequaltoitemTypeGet(intn);//getthenthdatavoidPrint();//printthelistprivate:ListNode<Type>*head;};template<typenameType>voidSingleList<Type>::MakeEmpty(){ListNode<Type>*pdel;while(head->m_pnext!=NULL){pdel=head->m_pnext;head->m_pnext=pdel->m_pnext;deletepdel;}}template<typenameType>intSingleList<Type>::Length(){ListNode<Type>*pmove=head->m_pnext;intcount=0;while(pmove!=NULL){pmove=pmove->m_pnext;count++;)returncount;}template<typenameType>ListNode<Type>*SingleList<Type>::Find(intn){if(n<0){cout«"ThenisoutofboundaryH«endl;returnNULL;)ListNode<Type>*pmove=head->m_pnext;for(inti=0;i<n&&pmove;i++){pmove=pmove->m_pnext;}if(pmove==NULL){cout«"Thenisoutofboundary"«endl;returnNULL;}returnpmove;}template<typenameType>ListNode<Type>*SingleList<Type>::Find(Typevaluejntn){if(n<l){cout«"Thenisillegal"«endl;returnNULL;ListNode<Type>*pmove=head;intcount=0;while(count!=n&&pmove){pmove=pmove->m_pnext;if(pmove->m_data==value){count++;))if(pmove==NULL){cout«"can'tfindtheelement"«endl;returnNULL;}returnpmove;}template<typenameType>boolSingleList<Type>::lnsert(Typeitem,intn){if(n<0){cout«"Thenisillegal"«endl;return0;}ListNode<Type>*pmove=head;ListNode<Type>*pnode=newListNode<Type>(item);if(pnode==NULL){cout«"Applicationerror!"«endl;return0;}for(inti=0;i<n&&pmove;i++){pmove=pmove->m_pnext;}if(pmove==NULL){cout«"thenisillegal"«endl;return0;}pnode->m_pnext=pmove->m_pnext;pmove->m_pnext=pnode;return1;}template<typenameType>boolSingleList<Type>::RemoveAII(Typeitem){ListNode<Type>*pmove=head;ListNode<Type>*pdel=head->m_pnext;while(pdel!=NULL){if(pdel->m_data==item){pmove->m_pnext=pdel->m_pnext;deletepdel;pdel=pmove->m_pnext;continue;}pmove=pmove->m_pnext;pdel=pdel->m_pnext;}return1;}template<typenameType>TypeSingleList<Type>::Remove(intn){if(n<0){cout«Hcan'tfindtheelement"«endl;exit⑴;}ListNode<Type>*pmove=headz*pdel;for(inti=0;i<n&&pmove->m_pnext;i++){pmove=pmove->m__pnext;)if(pmove->m_pnext==NULL){cout«"can'tfindtheelement"«endl;exit(l);}pdel=pmove->m__pnext;pmove->m_pnext=pdel->m_pnext;Typetemp=pdel->m_data;deletepdel;returntemp;}template<typenameType>TypeSingleList<Type>::Get(intn){if(n<0){cout«"Thenisoutofboundary"«endl;exit(l);}ListNode<Type>*pmove=head->m__pnext;for(inti=0;i<n;i++){pmove=pmove->m__pnext;if(NULL==pmove){cout«"Thenisoutofboundary"«endl;exit(l);returnpmove->m__data;template<typenameType>voidSingleList<Type>::Print(){ListNode<Type>*pmove=head->m_pnext;cout«nhead";while(pmove){cout«"一>"«pmove->m_data;pmove=pmove->m_pnext;}cout«"■一>over"«endl«endl«endl;}test.cpp#include<iostream>usingnamespacestd;#include"SingleList.h"intmain()(SingleList<int>list;for(inti=O;i<2O;i++){list.lnsert(i*3,i);}for(inti=0;i<5;i++){list.lnsert(3J*3);}cout«"theLengthofthelistis"«list.Length()«endl;list.Print();list.Remove(5);cout«HtheLengthofthelistisH«list.Length()«endl;list.Print();list.RemoveAII(3);cout«"theLengthofthelistis"«list.Length()«endl;list.Print();cout«"Thethirdelementisu«list.Get(3)«endl;cout«*list.Find(184)«endl;list.Find(lOO);list.MakeEmpty();cout«"theLengthofthelistis"«list.Length()«endl;list.Print();return0;}3、双向链表NodeList.htemplate<typenameType>classDoublyList;template<typenameType>classListNode{private:friendclassDoublyList<Type>;ListNode():m_pprior(NULL)/m_pnext(NULL){}ListNode(constTypeitem/ListNode<Type>*prior=NULL/ListNode<Type>*next=NULL):m_data(item)/m_pprior(prior)/m_pnext(next){}〜ListNode(){m_pprior=NULL;m_pnext=NULL;}public:TypeGetData();private:Typem_data;ListNode*m_pprior;ListNode*m_pnext;};template<typenameType>TypeListNode<Type>::GetData(){returnthis->m_data;|DoubleList.h#include"ListNode.h"template<typenameType>classDoublyList{public:DoublyList():head(newListNode<Type>()){//theheadnodepointtoitselfhead->m__pprior=head;head->m_pnext=head;)~DoublyList(){MakeEmptyO;deletehead;}public:voidMakeEmpty();//makethelistemptyintLength();//getthelengthofthelistListNode<Type>*Find(intn=O);//findthenthdataListNode<Type>*FindData(Typeitem);//findthedatawhichisequaltoitemboollnsert(Typeitemjntn=O);//insertiteminthenthdataTypeRemove(intn=0);//deletethenthdataTypeGet(intn=0);//getthenthdatavoidPrint(); //printthelistprivate:ListNode<Type>*head;template<typenameType>voidDoublyList<Type>::MakeEmpty(){ListNode<Type>*pmove=head->m_pnext/*pdel;while(pmove!=head){pdel=pmove;pmove=pdel->m_pnext;deletepdel;head->m_pnext=head;head->m_pprior=head;}template<typenameType>intDoublyList<Type>::Length(){ListNode<Type>*pprior=head->m_pprior/*pnext=head->m_pnext;intcount=0;while(l){if(pprior->m_pnext==pnext){break;if(pprior==pnext&&pprior!=head){count++;break;}count+=2;pprior=pprior->m_pprior;pnext=pnext->m_pnext;)returncount;}template<typenameTypoListNode<Type>*DoublyList<Type>::Find(intn=0){if(n<0){cout«"Thenisoutofboundary"«endl;returnNULL;}ListNode<Type>*pmove=head->m_pnext;for(inti=0;i<n;i++){pmove=pmove->m_pnext;if(pmove==head){cout«"Thenisoutofboundary"«endl;returnNULL;}}returnpmove;|template<typenameType>boolDoublyList<Type>::lnsert(Typeitemjntn){if(n<0){cout«"Thenisoutofboundary"«endl;return0;)ListNode<Type>*newnode=newListNode<Type>(item)/*pmove=head;if(newnode==NULL){cout«"ApplicationErorr!"«endl;exit(l);)for(inti=0;i<n;i++){//findthepositionforinsertpmove=pmove->m_pnext;if(pmove==head){cout«"Thenisoutofboundary"«endl;return0;}//insertthedatanewnode->m_pnext=pmove->m_pnext;newnode->m_pprior=pmove;pmove->m_pnext=newnode;newnode->m_pnext->m_pprior=newnode;return1;}template<typenameTypoTypeDoublyList<Type>::Remove(intn=0){if(n<0){cout«"ThenisoutofboundaryH«endl;exit(l);}ListNode<Type>*pmove=headz*pdel;for(inti=0;i<n;i++){//findthepositionfordeletepmove=pmove->m_pnext;if(pmove==head){cout«"Thenisoutofboundary"«endl;exit(l);//deletethedatapdel=pmove;pmove->m_pprior->m__pnext=pdel->m_pnext;pmove->m_pnext->m_pprior=pdel->m_pprior;Typetemp=pdel->m__data;deletepdel;returntemp;}template<typenameType>TypeDoublyList<Type>::Get(intn=0){if(n<0){cout«"ThenisoutofboundaryH«endl;exit(l);)ListNode<Type>*pmove=head;for(inti=0;i<n;i++){pmove=pmove->m_pnext;if(pmove==head){cout«"Thenisoutofboundary"«endl;exit⑴;))returnpmove->m_data;template<typenameType>voidDoublyList<Type>::Print(){ListNode<Type>*pmove=head->m_pnext;cout«Hhead";while(pmove!=head){cout«n■一>"«pmove->m_data;pmove=pmove->m__pnext;)cout«"■一>over"«endl«endl«endl;template<typenameType>ListNode<Type>*DoublyList<Type>::FindData(Typeitem){ListNode<Type>*pprior=head->m_pprior/*pnext=head->m_pnext;while(pprior->m_pnext!=pnext&&pprior!=pnext){//findthedatainthetwodirectionif(pprior->m_data==item){returnpprior;)if(pnext->m_data==item){returnpnext;)pprior=pprior->m_pprior;pnext=pnext->m_pnext;}cout«"can'tfindtheelement"«endl;returnNULL;}Test.cpp#include<iostream>include,,DoublyList.h"usingnamespacestd;intmain()(DoublyList<int>list;for(inti=0;i<20;i++){list.lnsert(i*3,i);}cout«ntheLengthofthelistisu«list.Length()«endl;list.Print();for(inti=0;i<5;i++){list.lnsert(3,i*3);}cout«HtheLengthofthelistisn«list.Length()«endl;list.Print();list.Remove(5);cout«HtheLengthofthelistis"«list.Length()«endl;list.Print();cout«list.FindData(54)->GetData()«endl;cout«"Thethirdelementis"«list.Get(3)«endl;list.MakeEmpty();cout«"theLengthofthelistis"«list.Length()«endl;list.Print();return0;}4、循环链表UstNode.htemplate<typenameType>classCircularList;template<typenameType>classListNode{private:friendclassCircularList<Type>;ListNode():m_pnext(NULL){}ListNode(constTypeitem/ListNode<Type>*next=NULL):m_data(item)zm_pnext(next){}〜ListNode(){m_pnext=NULL;}private:Typem_data;ListNode*m_pnext;};CircularList.h
include"ListNode.h"template<typenameType>classCircularList{public:CircularList():head(newListNode<Type>()){head->m_pnext=head;~CircularList(){MakeEmptyO;deletehead;public:voidMakeEmptyO;//clearthelistintLength();//getthelengthintLength();//getthelengthListNode<Type>*Find(Typevaluejntn);//findthenthdatawhichisequaltovalue//findthenthdata//insertthedataintothenthdataofthelist//findthenthdata//insertthedataintothenthdataofthelist//deletethenthdata//deleteallthedateswhichareequaltovalueboollnsert(Typeitemjntn=O);TypeRemove(intn=O);boolRemoveAII(Typeitem);TypeGet(intn);//getthenthdatavoidPrint();//printthelistprivate:ListNode<Type>*head;template<typenameType>voidCircularList<Type>::MakeEmpty(){ListNode<Type>*pdelz*pmove=head;while(pmove->m_pnext!=head){pdel=pmove->m_pnext;pmove->m_pnext=pdel->m_pnext;deletepdel;template<typenameType>intCircularList<Type>::Length(){ListNode<Type>*pmove=head;intcount=0;while(pmove->m_pnext!=head){pmove=pmove->m_pnext;count++;}returncount;template<typenameType>ListNode<Type>*CircularList<Type>::Find(intn){if(n<0){cout«"Thenisoutofboundaryn«endl;returnNULL;)ListNode<Type>*pmove=head->m_pnext;for(inti=0;i<n&&pmove!=head;i++){pmove=pmove->m_pnext;}if(pmove==head){cout«"Thenisoutofboundaryn«endl;returnNULL;)returnpmove;)template<typenameType>ListNode<Type>*CircularList<Type>::Find(Typevaluejntn){if(n<l){cout«"Thenisillegal,,«endl;returnNULL;}ListNode<Type>*pmove=head;intcount=0;while(count!=n){pmove=pmove->m_pnext;if(pmove->m_data==value){count++;)if(pmove==head){cout«"can'tfindtheelement"«endl;returnNULL;})returnpmove;}template<typenameType>boolCircularList<Type>::lnsert(Typeitem,intn){if(n<0){cout«"ThenisoutofboundaryH«endl;return0;)ListNode<Type>*pmove=head;ListNode<Type>*pnode=newListNode<Type>(item);if(pnode==NULL){cout«"Applicationerror!"«endl;exit(l);)for(inti=O;i<n;i++){pmove=pmove->m_pnext;if(pmove==head){cout«"Thenisoutofboundary"«endl;return0;)}pnode->m_pnext=pmove->m_pnext;pmove->m_pnext=pnode;return1;)template<typenameType>boolCircularList<Type>::RemoveAII(Typeitem){ListNode<Type>*pmove=head;ListNode<Type>*pdel=head->m_pnext;while(pdel!=head){if(pdel->m_data==item){pmove->m_pnext=pdel->m__pnext;deletepdel;pdel=pmove->m_pnext;continue;}pmove=pmove->m_pnext;pdel=pdel->m_pnext;}return1;}template<typenameType>TypeCircularList<Type>::Remove(intn){if(n<0){cout«"can'tfindtheelement"«endl;exit(l);)ListNode<Type>*pmove=head/*pdel;for(inti=0;i<n&&pmove->m_pnext!=head;i++){pmove=pmove->m_pnext;}if(pmove->m_pnext==head){cout«"can'tfindtheelement"«endl;exit(l);}pdel=pmove->m__pnext;pmove->m_pnext=pdel->m_pnext;Typetemp=pdel->m_data;deletepdel;returntemp;}template<typenameType>TypeCircularList<Type>::Get(intn){if(n<0){cout«"Thenisoutofboundaryn«endl;exit(l);)ListNode<Type>*pmove=head->m_pnext;for(inti=0;i<n;i++){pmove=pmove->m_pnext;if(pmove==head){cout«"Thenisoutofboundary"«endl;exit(l);)}returnpmove->m_data;}template<typenameType>voidCircularList<Type>::Print(){ListNode<Type>*pmove=head->m_pnext;cout«"head";while(pmove!=head){cout«"—>"«pmove->m_data;pmove=pmove->m_pnext;}cout«"■一>over"«endl«endl<<endl;}Test.cpp#include<iostream>include"CircularList.h"usingnamespacestd;intmain()CircularList<int>list;for(inti=0;i<20;i++){list.lnsert(i*3,i);)cout«"theLengthofthelistis"«list.Length()«endl;list.Print();for(inti=0;i<5;i++){list.lnsert(3J*3);}cout«"theLengthofthelistisn«list.Length()«endl;list.Print();list.Remove(5);cout«"theLengthofthelistisn«list.Length()«endl;list.Print();list.RemoveAII(3);cout«"theLengthofthelistisH«list.Length()«endl;list.Print();cout«"Thethirdelementis"«list.Get(3)«endl;list.MakeEmpty();cout«HtheLengthofthelistis"«list.Length()«endl;list.Print();return0;}5、顺序栈SeqStack.htemplate<typenameType>classSeqStack{public:SeqStack(intsz):m_ntop(-l)/m_nMaxSize(sz){m_pelements=newType[sz];if(m_pelements==NULL){cout«"ApplicationError!H«endl;exit(l);)
~SeqStack(){delete[]m_pelements;public:voidPush(constTypeitem);//pushdataTypePop();TypeGetTopOconst;voidPrint();TypePop();TypeGetTopOconst;voidPrint();voidMakeEmpty(){//popdata//getdata//printthestack//makethestackemptym_ntop=-l;)boolIsEmptyOconst{returnm_ntop==-l;}boollsFull()const{returnm_ntop==m_nMaxSize-l;m_ntop=-l;)boolIsEmptyOconst{returnm_ntop==-l;}boollsFull()const{returnm_ntop==m_nMaxSize-l;private:intm_ntop;Type*m__pelements;intm_nMaxSize;template<typenameType>voidSeqStack<Type>::Push(constTypeitem){if(lsFull()){cout«nThestackisfull!"«endl;return;}m_pelements[++m_ntop]=item;template<typenameType>TypeSeqStack<Type>::Pop(){if(lsEmpty()){cout«"Thereisnoelement!"«endl;exit⑴;}returnm_pelements[m_ntop-];template<typenameType>TypeSeqStack<Type>::GetTop()const{if(lsEmpty()){cout«"Thereisnoelement!"«endl;exi^l);)returnm_pelements[m_ntop];}template<typenameType>voidSeqStack<Type>::Print(){cout«"bottom";for(inti=0;i<=m_ntop;i++){cout«"一>n«m_pelements[i];)cout«"■一>top"«endl«endl«endl;}Test.cpp#include<iostream>usingnamespacestd;#include"SeqStack.h',intmain(){SeqStack<int>stack(lO);intinit[10]={l,2,6,9,03,8,7,5,4};for(inti=0;i<10;i++){stack.Push(init[i]);}stack.Print();stack.Push(88);cout«stack.Pop()«endl;stack.Print();stack.MakeEmptyO;stack.Print();stack.Pop();return0;)6、链式栈StackNode.htemplate<typenameType>classLinkStack;template<typenameType>classStackNode{private:friendclassLinkStack<Type>;StackNode(Typedt,StackNode<Type>*next=NULL):m_data(dt)/m_pnext(next){}private:Typem_data;StackNode<Type>*m_pnext;};LinkStack.h#include"StackNode.h"template<typenameType>classLinkStack{public:LinkStack():m_ptop(NULL){}〜LinkStack(){MakeEmpty();)public:voidMakeEmpty(); //makethestackemptyvoidPush(constTypeitem);//pushthedataTypePop(); //popthedataTypeGetTopOconst; //getthedatavoidPrint(); //printthestackboolIsEmptyOconst{returnm_ptop==NULL;}private:StackNode<Type>*m_ptop;};template<typenameType>voidLinkStack<Type>::MakeEmpty(){StackNode<Type>*pmove;while(m_ptop!=NULL){pmove=m_ptop;m_ptop=m_ptop->m_pnext;deletepmove;)}template<typenameType>voidLinkStack<Type>::Push(constTypeitem){m__ptop=newStackNode<Type>(item/m_ptop);)template<typenameType>TypeLinkStack<Type>::GetTop()const{if(lsEmpty()){cout«"Thereisnoelements!"«endl;exit(l);)returnm_ptop->m__data;)template<typenameType>TypeLinkStack<Type>::Pop(){if(lsEmpty()){cout«"Thereisnoelements!"«endl;exit(l);)StackNode<Type>*pdel=m__ptop;m_ptop=m_ptop->m_pnext;Typetemp=pdel->m_data;deletepdel;returntemp;}template<typenameType>voidLinkStack<Type>::Print(){StackNode<Type>*pmove=m_ptop;cout«"buttom";while(pmove!=NULL){cout«"—>"«pmove->m_data;pmove=pmove->m__pnext;}cout«"・・・>top"«endl«endl«endl;}Test.cpp#include<iostream>usingnamespacestd;#include"LinkStack.h"intmain(){LinkStack<int>stack;intinit[10]={l,3,5,7,4,2,8,0,6,9};for(inti=0;i<10;i++){stack.Push(init[i]);}stack.Print();cout«stack.Pop()«endl;stack.Print();cout«stack.GetTop()«endl;stack.Print();cout«stack.Pop()«endl;stack.Print();stack.MakeEmptyO;stack.Print();stack.Pop();return0;}7.顺序队列SeqQueue.htemplate<typenameType>classSeqQueue{public:SeqQueue(intsz):m_nrear(0)/m_nfront(0)/m_ncount(0)/m_nMaxSize(sz){m_pelements=newType[sz];if(m_pelements==NULL){cout«"ApplicationError!"«endl;exit(l);})〜SeqQueue(){delete[]m_pelements;
}voidMakeEmpty();boolIsEmptyO;}voidMakeEmpty();boolIsEmptyO;boollsFull();boolAppend(constTypeitem);TypeDelete();TypeGet();voidPrint();//makethequeueempty//insertdata//deletedata//getdata//printthequeueprivate:intm_nrear;intm_nfront;intm_ncount;intm_nMaxSize;Type*m_pelements;};template<typenameType>voidSeqQueue<Type>::MakeEmpty(){this->m_ncount=0;this->m_nfront=0;this->m_nrear=O;}template<typenameType>boolSeqQueue<Type>::lsEmpty(){returnm_ncount==0;}template<typenameType>boolSeqQueue<Type>::lsFull(){returnm_ncount==m_nMaxSize;}template<typenameType>boolSeqQueue<Type>::Append(constTypeitem){if(lsFull()){cout«"Thequeueisfull!"«endl;return0;}m__pelements[m_nrear]=item;m_nrear=(m_nrear+l)%m_nMaxSize;m_ncount++;return1;)template<typenameType>TypeSeqQueue<Type>::Delete(){if(lsEmpty()){cout«"Thereisnoelement!"«endl;exit(l);}Typetemp=m_pelements[m_nfront];m_nfront=(m_nfront+l)%m_nMaxSize;m__ncount-;returntemp;}template<typenameType>TypeSeqQueue<Type>::Get(){if(lsEmpty()){cout«"Thereisnoelement!"«endl;exit⑴;)returnm_pelements[m_nfront];)template<typenameType>voidSeqQueue<Type>::Print(){cout«"front";for(inti=0;i<m_ncount;i++){cout«"•一>"«m_pelements[(m_nfront+i+m_nMaxSize)%m_nMaxSize];)cout«"一一>rear"«endl«endl«endl;}Test.cpp#include<iostream>usingnamespacestd;#include"SeqQueue.h"intmain(){SeqQueue<int>queue(lO);intinit[10]={l,6,9,0,2,5,83,7,4};for(inti=0;i<5;i++){queue.Append(init[i]);)queue.Print();cout«queue.Delete()«endl;queue.Print();for(inti=5;i<10;i++){queue.Append(init[i]);}queue.Print();cout«queue.Get()«endl;queue.MakeEmpty();queue.Print();queue.Append(l);queue.Print();return0;}8、链式队列QueueNode.htemplate<typenameType>classLinkQueue;template<typenameType>classQueueNode{private:friendclassLinkQueue<Type>;QueueNode(constTypeitem/QueueNode<Type>*next=NULL):m_data(item)/m_pnext(next){}private:Typem_data;QueueNode<Type>*m_pnext;};LinkQueue.h#includeMQueueNode.h"template<typenameType>classLinkQueue{public:LinkQueue():m_prear(NULL)/m_pfront(NULL){}〜LinkQueue(){MakeEmptyO;}voidAppend(constTypeitem);//insertdataTypeDelete(); //deletedata
TypeGetFront();voidMakeEmpty();TypeGetFront();voidMakeEmpty();voidPrint();//makethequeueempty//printthequeueboolIsEmptyOconst{returnm_pfront==NULL;)private:QueueNode<Type>*m_prear,*m_pfront;|;template<typenameType>voidLinkQueue<Type>::MakeEmpty(){QueueNode<Type>*pdel;while(m_pfront){pdel=m_pfront;m_pfront=m_pfront->m__pnext;deletepdel;}|template<typenameType>voidLinkQueue<Type>::Append(constTypeitem){if(m_pfront==NULL){m__pfront=m__prear=newQueueNode<Type>(item);}else{m_prear=m_prear->m_pnext=newQueueNode<Type>(item);}}template<typenameType>TypeLinkQueue<Type>::Delete(){if(lsEmpty()){cout«"Thereisnoelement!"«endl;exit(l);}QueueNode<Type>*pdel=m_pfront;Typetemp=m_pfront->m_data;m_pfront=m_pfront->m_pnext;deletepdel;returntemp;}template<typenameType>TypeLinkQueue<Type>::GetFront(){if(lsEmpty()){cout«"Thereisnoelement!"«endl;exit(l);}returnm_pfront->m_data;}template<typenameType>voidLinkQueue<Type>::Print(){QueueNode<Type>*pmove=m_pfront;cout«"front";while(pmove){cout«"--->"«pmove->m_data;pmove=pmove->m_pnext;)cout«"一一>rear"«endl«endl<<endl;}Test.cpp#include<iostream>usingnamespacestd;include"LinkQueue.h"intmain(){LinkQueue<int>queue;intinit[10]={l,3,6,8,9,2,0,5,4,7};for(inti=0;i<10;i++){queue.Append(init[i]);}queue.Print();queue.Delete();queue.Print();cout«queue.GetFront()«endl;queue.Print();queue.MakeEmpty();queue.Print();queue.Delete();return0;|9、优先级队列QueueNode.htemplate<typenameType,typenameCmp>classPriorityQueue;template<typenameType,typenameCmp>classQueueNode{private:friendclassPriorityQueue<TypezCmp>;QueueNode(constTypeitem/QueueNode<Type/Cmp>*next=NULL):m_data(item)/m_pnext(next){}private:Typem_data;QueueNode<Type/Cmp>*m_pnext;};Compare.htemplate<typenameType>classCompare{〃处理•般比较大小public:staticboollt(Typeitemljypeitem2););template<typenameType>boolCompare<Type>::lt(Typeiteml,Typeitem2){returniteml<item2;}structSpecialData{friendostream&operator«(ostream&zSpecialData&);intm_ntenor;intm_npir;);ostream&operator«(ostream&os^pecialData&out){os«out.m_ntenor«H"«out.m_npir;returnos;|classSpecialCmp{ 〃处理特殊比较大小,用户可添加适当的类public:staticboollt(SpecialDataiteml,SpecialDataitem2);};boolSpecialCmp::lt(SpecialDataiteml,SpecialDataitem2){returniteml.m_npir<item2.m_npir;}PriorityQueue.hinclude"QueueNode.h"#include"Compare.h"template<typenameType,typenameCmp>classPriorityQueue{//CmpisDesignedforcomparepublic:PriorityQueue():m__prear(NULL)/m_pfront(NULL){}~PriorityQueue(){MakeEmpty();}voidMakeEmptyO; //makethequeueemptyvoidAppend(constTypeitem);//insertdataTypeDelete(); //deletedataTypeGetFront(); //getdatavoidPrint(); //printthequeueboolIsEmptyOconst{returnm_pfront==NULL;)private:QueueNode<Type/Cmp>*m_preag*m_pfront;};template<typenameType,typenameCmp>voidPriorityQueue<Type/Cmp>::MakeEmpty(){QueueNode<Type,Cmp>*pdel;while(m_pfront){pdel=m_pfront;m__pfront=m_pfront->m__pnext;deletepdel;}}template<typenameType,typenameCmp>voidPriorityQueue<Type/Cmp>::Append(constTypeitem){if(m_pfront==NULL){m_pfront=m_prear=newQueueNode<Type,Cmp>(item);)else(m_prear=m_prear->m_pnext=newQueueNode<Type/Cmp>(item);)}template<typenameType,typenameCmp>TypePriorityQueue<Type/Cmp>::Delete(){if(lsEmpty()){cout«"Thereisnoelements!n«endl;exi^l);)QueueNode<Type/Cmp>*pdel=m_pfront/*pmove=m_pfront;while(pmove->m_pnext){//gettheminimizepriority'sdata//cmp::Itisusedforcomparethetwodata,ifthefrontone//islessthantheback,thenreturn1if(Cmp::lt(pmove->m_pnext->m_data/pdel->m_pnext->m_data)){pdel=pmove;}pmove=pmove->m_pnext;)pmove=pdel;pdel=pdel->m_pnext;pmove->m_pnext=pdel->m_pnext;Typetemp=pdel->m_data;deletepdel;returntemp;}template<typenameTypeztypenameCmp>TypePriorityQueue<Type/Cmp>::GetFront(){if(lsEmpty()){cout«"Thereisnoelements!”《endl;exit(l);)QueueNode<Type/Cmp>*pde^m-pfront,*pmove=m_pfront->m_pnext;while(pmove){//gettheminimizepriority'sdataif(Cmp::lt(pmove->m_data/pdel->m_data)){pdel=pmove;)pmove=pmove->m_pnext;returnpdel->m_data;template<typenameType,typenameCmp>voidPriorityQueue<Type/Cmp>::Print(){QueueNode<Type/Cmp>*pmove=m_pfront;cout«"front";while(pmove){cout«"一>"«pmove->m_data;pmove=pmove->m_pnext;}cout«n—>rear"«endl«endl«endl;|Test.cpp#include<iostream>#include<cstdlib>usingnamespacestd;#include"PriorityQueue.h"intmain(){PriorityQueue<int/Compare<int»queue;intinit[10]={l,9,3,5,0,8,2,4,6,7};for(inti=0;i<10;i++){queue.Append(init[i]);}queue.Print();queue.Delete();queue.Print();system("pause");system("cls");PriorityQueue<SpecialData/SpecialCmp>spe_queue;intinit2⑸[2]={{34,2},{64,1},{18,3},{24,2},{55,4}};SpecialDatadata[5];for(inti=0;i<5;i++){data[i].m_npir=init2[i][l];data[i].m_ntenor=init2[i][0];for(inti=0;i<5;i++){spe_queue.Append(data[i]);}spe_queue.Print();cout«spe_queue.GetFront()«endl«endl;spe_queue.Delete();spe_queue.Print();return0;}10、串MyString.hconstintMAXSIZE=100;classCMyString|public:CMyString(constCMyString©);CMyString(constchar*init);CMyString();〜CMyString(){delete[]m_pstr;}intLength()const{returnm_ncurlen;)intFind(CMyStringpart)const;char*GetBuffer()const;public:CMyString&operator()(intposjntlen);booloperator==(constCMyStringcmp_str)const;booloperator!=(constCMyStringcmp_str)const;booloperator<(constCMyStringcmp_str)const;booloperator>(constCMyStringcmp_str)const;booloperator!()const{returnm_ncurlen==0;)CMyString&operator=(constCMyString©);CMyString&operator+=(constCMyString&add);char&operator[](inti);friendostream&operator«(ostream&,CMyString&);friendistream&operator»(istream&,CMyString&);private:voidNext();private:intm_ncurlen;char*m_pstr;int*m_pnext;};MyString.cpp#include<iostream>#include<cstring>usingnamespacestd;include"MyString.hnCMyString::CMyString(){ //createemptystringm_pstr=newchar[MAXSIZE+l];if(!m_pstr){cerr«HAllocationError"«endl;exit⑴;)this->m_ncurlen=O;m_pstr[0]=,\0';)CMyString::CMyString(constchar*init){//initializethestringwithchar*m_pstr=newchar[MAXSIZE+l];if(!m_pstr){cerr«"AllocationError"«endl;exit⑴;this->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《金保险产品》课件
- 《班级处处有规则》课件
- 《生物共生关系》课件
- 《CKD血脂紊乱》课件
- 《信息提取与概括》课件
- 《频率补偿》课件
- 防范电信网络诈骗宣传课件
- 《伺服电机的选型》课件
- DB37-T 4492-2022 海岸线质量评价技术规范
- 《武术运动基本知识》课件
- 四川省自贡市2024-2025学年上学期八年级英语期末试题(含答案无听力音频及原文)
- 2025-2030年中国汽车防滑链行业竞争格局展望及投资策略分析报告新版
- 2025年上海用人单位劳动合同(4篇)
- 二年级上册口算题3000道-打印版让孩子口算无忧
- 高中英语北师大版必修第一册全册单词表(按单元编排)
- 新教科版科学小学四年级下册全册教案
- 2024中考语文试卷及答案长沙
- 2024年高考生物总复习高中生物必修一全册重点知识梳理笔记(全册完整版)
- 2025年生物安全年度工作计划
- 人教版数学六年级下册全册核心素养目标教学设计
- 通用电子嘉宾礼薄
评论
0/150
提交评论