簡體   English   中英

哪種數據結構像雙向鏈表和數組的組合?

[英]Which data structure is like a combination of a doubly-linked list and an array?

是否有任何已經創建的結構僅僅是doubly linked list nodes basic array

我的意思是,然后您使用get(int index)它將直接從數組( array[i].element )返回元素。 有了這種結構,我也可以輕松地進行foreach,因為每個元素都將彼此鏈接,因此我無需考慮空白數組的位置。

問:為什么我需要這個? 答:我有無限的內存,我知道我需要多大的數組,並且我希望這種結構最快。

這是一個小的C ++ 11容器指南 ,只需設置您的約束並遵循箭頭:

在此處輸入圖片說明

IMO std::deque是最有可能的候選人。

如果您想自己創建一些東西,這是一個看起來像這樣的示例:

struct Node{
    // constructor
    Node (int v, Node* n = 0, Node* p = 0) 
        : value(v), next(n), prev(p) { }

    // data member
    int value;
    // pointer to next node
    Node* next;
    // pointer to previous node
    Node* prev;
};

size_t number_of_nodes = 10;
Node* ptr = new Node[number_of_nodes];

根據您的描述,我認為最合適的數據結構將是雙端隊列。 或者,在C ++中,是std::deque

它像一個雙向鏈接列表:

  • 存儲前后指針
    • {push,pop}_{front,back}O(1)
  • 在需要擴展時不需要重新分配

像數組一樣:

  • 允許下標索引
    • O(1)隨機訪問

您要查找的get操作是operator[]std::deque::at

一些考慮因素是,不在結構的極性末端(即中間某處)的元素的插入/刪除是元素數量的平均情況O(n) ,出於相同的原因,從元素中刪除元素是O(n) 。基本數組。

強制性基本用例

我認為您正在尋找的是STL中已經存在的容器雙端隊列。 請參閱-> http://en.cppreference.com/w/cpp/container/deque如果不是您要找的容器,則可能在這里找到所需的容器-> http://www.cplusplus。 com / reference / stl /

希望這個幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM