亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c++數據結構的實現類

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;     }
查看完整描述

2 回答

?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

我的想法是,既然是用C++去解決這個問題,那么就用C++的封裝方式去解決。在C++中,一切皆對象,那么就定義一個類queue,具體的實現可以參考STL的queue實現。

如果是想用C的方式去解決,那么就用鏈表方式
struct _Node
{

char* data;
struct _Node* priv;
struct _Node* next;

};

data在程序執行時,創建有malloc完成,刪除有free完成。
我的理解是C和C++不是一樣的語言。


查看完整回答
反對 回復 2018-10-29
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

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-10-29
  • 2 回答
  • 0 關注
  • 970 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號