91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ Hash表與鏈表結合應用

發布時間:2024-11-20 10:51:33 來源:億速云 閱讀:79 作者:小樊 欄目:編程語言

在C++中,哈希表(Hash Table)和鏈表(Linked List)可以結合應用,以實現更高效的數據存儲和訪問。哈希表提供了快速的查找、插入和刪除操作,而鏈表則提供了動態內存分配和插入操作的優勢。結合這兩種數據結構,可以實現一個高效的數據結構,既能夠快速查找數據,又能夠靈活地插入和刪除數據。

下面是一個簡單的示例,展示了如何將哈希表和鏈表結合應用:

#include <iostream>
#include <unordered_map>
#include <list>

template <typename Key, typename Value>
class HashLinkedList {
public:
    // 查找鍵對應的值
    Value get(const Key& key) const {
        auto it = hash_table.find(key);
        if (it != hash_table.end()) {
            return it->second;
        }
        return Value(); // 如果找不到,返回默認值
    }

    // 插入鍵值對
    void insert(const Key& key, const Value& value) {
        if (hash_table.find(key) == hash_table.end()) {
            hash_table[key] = value;
            linked_list.push_back(key);
        }
    }

    // 刪除鍵值對
    void remove(const Key& key) {
        auto it = hash_table.find(key);
        if (it != hash_table.end()) {
            hash_table.erase(it);
            // 從鏈表中刪除鍵
            auto list_it = std::find(linked_list.begin(), linked_list.end(), key);
            if (list_it != linked_list.end()) {
                linked_list.erase(list_it);
            }
        }
    }

private:
    std::unordered_map<Key, Value> hash_table; // 哈希表
    std::list<Key> linked_list; // 鏈表
};

int main() {
    HashLinkedList<int, std::string> hash_linked_list;
    hash_linked_list.insert(1, "one");
    hash_linked_list.insert(2, "two");
    hash_linked_list.insert(3, "three");

    std::cout << "Key 1: " << hash_linked_list.get(1) << std::endl;
    std::cout << "Key 2: " << hash_linked_list.get(2) << std::endl;
    std::cout << "Key 3: " << hash_linked_list.get(3) << std::endl;

    hash_linked_list.remove(2);

    std::cout << "After removing Key 2:" << std::endl;
    std::cout << "Key 1: " << hash_linked_list.get(1) << std::endl;
    std::cout << "Key 2: " << hash_linked_list.get(2) << std::endl;
    std::cout << "Key 3: " << hash_linked_list.get(3) << std::endl;

    return 0;
}

在這個示例中,我們定義了一個名為HashLinkedList的模板類,它包含一個哈希表(std::unordered_map)和一個鏈表(std::list)。哈希表用于存儲鍵值對,鏈表用于存儲鍵的順序。通過這種方式,我們可以在O(1)時間復雜度內查找鍵對應的值,同時保持插入和刪除操作的靈活性。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

囊谦县| 娄烦县| 岳普湖县| 江都市| 哈巴河县| 沙田区| 沧源| 南川市| 新兴县| 临清市| 德庆县| 林甸县| 潼关县| 丰顺县| 台南市| 罗山县| 格尔木市| 临邑县| 贵港市| 阳高县| 内乡县| 汉源县| 新晃| 肃宁县| 连云港市| 崇义县| 定南县| 招远市| 株洲县| 安陆市| 枣庄市| 松溪县| 太仓市| 且末县| 隆安县| 嘉善县| 平顺县| 姚安县| 丽水市| 桓仁| 海阳市|