zoukankan      html  css  js  c++  java
  • C++队列中应该注意的一些问题

    第一次在C++中写类,新手,见笑

    #include<iostream.h>
    #include<iostream>
    template<typename T>
    class Queue
    {
    private:
    int maxsize,front,rear;
    T *q;
    public:
    Queue()
    {
    q=new T[maxsize];
    rear=front=0;
    }
    ~Queue()
    {
    delete []q;
    }
    bool AddQ(T item);
    bool Delete(T &item);
    bool QFull();
    bool QEmpty();
    int getsize();
    };
    template<typename T>
    bool Queue<T> ::AddQ(T item)
    {
    rear=(++rear)%maxsize;
    if(rear==front)
    {
    printf("The Queue is full");
    if(!front)
    {
    rear=maxsize;
    }
    else
    {
    rear=rear-1;
    }
    return false;
    }
    else
    {
    q[rear]=item;
    return true;
    }
    }
    template<typename T>
    bool Queue<T> ::Delete(T &item)
    {
    if(front==rear)
    {
    printf("The queue is empty!");
    return false;
    }
    else
    {
    front=front+1;
    front=front%maxsize;
    item=q[front];
    return true;
    }
    }
    template<typename T>
    int Queue<T> ::getsize()
    {
    return rear-front;
    }

    1、首先吧,类应该写到.h文件中

    2、其次应该写与类名一样的构造函数

    Queue()
    {
    q=new T[maxsize];
    rear=front=0;
    }

    3、template<typename T> 

    这样的话就可以不限制使用的数据类型了

    4、class之后的{}应该加;

    5、

    bool AddQ(T item);
    bool Delete(T &item);
    bool QFull();
    bool QEmpty();
    int getsize();

    在类外写这些函数时,每一个函数前应该加template<typename T> 

    6、还有一个问题:

    Delete(T &item)

    Add(T item)

    为什么一个取地址为什么另一个不取地址

    试了一下,好像暂时两个都可以运行

  • 相关阅读:
    构建之法阅读笔记2
    2020.2.10
    2020.2.9
    2020.2.8
    2020.2.7
    2020.2.6
    2020.2.5
    学习进度——第十三周
    PHPStorm+XAMPP开发php项目
    第一阶段成果建议
  • 原文地址:https://www.cnblogs.com/yunerlalala/p/5482734.html
Copyright © 2011-2022 走看看