C++类模板的使用
标签:blog class com code img size java div http string javascript
面向对象:
设计和实现一个C++类模板,来提供一种采用数组来存储的、元素为任意类型的环形队。要求提供的操作:加入元素;提取元素;返回环形队允许存储的元素个数最大值;返回当前的有效元素个数。
#include
#includeusing 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
评论