c++数据结构的实现类

查看:93
本文介绍了c++数据结构的实现类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我想用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;
    }

解决方案

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队列,用链表实现更方便,而且易于增删元素。这种用数组实现的一般用于循环队列。

这篇关于c++数据结构的实现类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆