为了账号安全,请及时绑定邮箱和手机立即绑定

c++数据结构的实现类

c++数据结构的实现类

慕田峪7331174 2018-08-12 10:22:43
我想用c++写一个队列类,看到网上有结构体是这么写的typedef struct Queue_tag{      int data[MAXSIZE];      int front,rear; } QUEUE;但是实例化类时好像只能通过改写MAXSIZE来更改队列初始化大小我想在构造函数里输入参数来确定大小,于是我写了下面的结构体,然后在函数里new了一个随参数改变长度的数组,并让*arr指向这个数组,请问这么做有没有问题,我看好多代码数组在结构体里都直接确定了大小,那有没有什么办法可以不通过更改宏定义而是通过构造函数来初始化大小呢struct queue {     T *arr;     T *head;     T *tail;}*q;     void initQueue(int lenght)     {         q = new queue;         T *p = new T[lenght];         q->arr = p;         q->head = p;         q->tail = p;     }
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

没问题,只要你能够正确处理异常和记得释放内存……
为什么不用std::queue呢……

查看完整回答
反对 回复 2018-08-19
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

template<T>

class QUEUE

{

private:

    T* data;

    int front;

    int rear;

    int size;

public:

    QUEUE() {}

    QUEUE(int sz)

    {

        data = new T(sizeof(T) * sz);

        size = sz;

        /*your code below*/

    }

    ~QUEUE()

    {

        delete data;

        data = nullptr;

    }

};

题主如果是练手,可以像上面这样,自己重载一个构造函数就行了。如果是为了项目要用,直接用std::queue。另外一般的FIFO队列,用链表实现更方便,而且易于增删元素。这种用数组实现的一般用于循环队列。

查看完整回答
反对 回复 2018-08-19
  • 2 回答
  • 0 关注
  • 720 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信