C++类模板的使用

2020-11-16 09:12

阅读:945

标签:blog   class   com   code   img   size   java   div   http   string   javascript   

面向对象:

设计和实现一个C++类模板,来提供一种采用数组来存储的、元素为任意类型的环形队。要求提供的操作:加入元素;提取元素;返回环形队允许存储的元素个数最大值;返回当前的有效元素个数。

 

mamicode.com,搜素材
#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;
}
mamicode.com,搜素材

结果为:

mamicode.com,搜素材

C++类模板的使用,搜素材,soscw.com

C++类模板的使用

标签:blog   class   com   code   img   size   java   div   http   string   javascript   

原文地址:http://www.cnblogs.com/yvictoryr/p/3694699.html


评论


亲,登录后才可以留言!