亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

林甸县| 青海省| 武鸣县| 南宫市| 滨海县| 阿巴嘎旗| 湟中县| 新乡县| 友谊县| 酉阳| 余江县| 顺义区| 郧西县| 呼图壁县| 饶河县| 南乐县| 宜宾县| 宁蒗| 吉隆县| 多伦县| 阳城县| 北票市| 明溪县| 新密市| 安乡县| 陆河县| 汕尾市| 庐江县| 睢宁县| 鄂伦春自治旗| 咸阳市| 九龙城区| 宜州市| 柳州市| 长泰县| 堆龙德庆县| 和田县| 惠来县| 黔西| 嫩江县| 荣昌县|