帮我看看代码有什么问题
查看原帖
帮我看看代码有什么问题
1746336
xiaoyvya楼主2025/7/25 15:09
#include <iostream>
#include <unordered_map>

using namespace std;

// 链表节点结构
struct Node {
    int val;
    Node* next;
    Node(int x) : val(x), next(nullptr) {}
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    // 初始化链表,最初只有元素1
    Node* head = new Node(1);
    unordered_map<int, Node*> nodeMap;
    nodeMap[1] = head;
    
    int q;
    cin >> q;
    
    while (q--) {
        int op, x, y;
        cin >> op;
        
        if (op == 1) {
            // 插入操作:将y插入到x后面
            cin >> x >> y;
            Node* newNode = new Node(y);
            nodeMap[y] = newNode;
            
            // 将新节点插入到x之后
            newNode->next = nodeMap[x]->next;
            nodeMap[x]->next = newNode;
        } 
        else if (op == 2) {
            // 查询操作:询问x后面的元素
            cin >> x;
            Node* nextNode = nodeMap[x]->next;
            cout << (nextNode ? nextNode->val : 0) << '\n';
        } 
        else if (op == 3) {
            // 删除操作:删除x后面的元素
            cin >> x;
            Node* toDelete = nodeMap[x]->next;
            if (toDelete) {
                // 更新指针关系
                nodeMap[x]->next = toDelete->next;
                // 从哈希表中移除被删除节点
                nodeMap.erase(toDelete->val);
                // 释放内存
                delete toDelete;
            }
        }
    }
    
    // 清理内存
    Node* curr = head;
    while (curr) {
        Node* temp = curr;
        curr = curr->next;
        delete temp;
    }
    
    return 0;
}

2025/7/25 15:09
加载中...