C++类模板的使用
2020-11-16 09:12
阅读:1085
标签:blog class com code img size java div http string javascript
面向对象:
设计和实现一个C++类模板,来提供一种采用数组来存储的、元素为任意类型的环形队。要求提供的操作:加入元素;提取元素;返回环形队允许存储的元素个数最大值;返回当前的有效元素个数。

#include#include using namespace std; templateclass Type> class Queue { private: int front; int rear; Type *item; int length; //有效长度 int maxsize; //最大长度 public: Queue(int i) { front=rear=0; if(i>10) maxsize=i; else maxsize=10; length=0; item=new Type[maxsize]; if(item==0) { cout"空间分配不成功"endl; } } ~Queue() { delete []item; } void Append(Type x); //追加元素 void GetHead(Type &x); //取元素 bool Allocation_mem(); //若空间不足,分配空间 bool IsFull() //判断队满 { if((rear+1)%maxsize==front) return true; else return false; } bool IsEmputy() //判断队空 { if(rear==front) return true; else return false; } int Q_maxsize() //返回队列中允许存储的元素个数最大值 { return maxsize; } int Q_length() //返回当前队列的有效元素个数 { return length; } }; templateclass Type> void Queue ::Append(Type x) { if(IsFull()) { Allocation_mem(); } rear=(rear+1)%maxsize; item[rear]=x; length++; } templateclass Type> void Queue ::GetHead(Type &x) { if(IsEmputy()) { cout"队列为空"endl; } front=(front+1)%maxsize; x=item[front]; length--; } templateclass Type> bool Queue ::Allocation_mem() { Type *p,*temp; p=new Type[maxsize+10]; if(!p) { cout"扩展空间失败"endl; return false; } memmove(p,item,sizeof(Type)*maxsize); temp=item; item=p; delete []temp; maxsize=maxsize+10; return true; } //测试程序为: int main() { cout"整型队列1:"endl; Queueint> queue1(8); int input[10],i,output; for(i=0;i10;i++) { input[i]=i+1; queue1.Append(input[i]); } cout"队列中允许存储的元素个数最大为:"endl; cout"队列中的有效元素个数为:"endl; cout"队列中的元素为:"; for(i=0;i10;i++) { queue1.GetHead(output); cout" "; } coutendl; cout"字符型队列2:"endl; Queuechar> queue2(26); char in[27]="abcdefghijklmnopqrstuvwxyz",a; int j,k; for(j=0;j26;j++) { queue2.Append(in[j]); } cout"队列中允许存储的元素个数最大为:"endl; cout"队列中的有效元素个数为:"endl; cout"队列中的元素为:"; for(k=0;k26;k++) { queue2.GetHead(a); cout" "; } coutendl; return 0; }

结果为:
C++类模板的使用,搜素材,soscw.com
C++类模板的使用
标签:blog class com code img size java div http string javascript
原文地址:http://www.cnblogs.com/yvictoryr/p/3694699.html
评论
亲,登录后才可以留言!