 悬赏园豆:40
                [已解决问题] 
            
                    解决于 2025-07-21 21:36
                悬赏园豆:40
                [已解决问题] 
            
                    解决于 2025-07-21 21:36 
                 
        #include <iostream>
using namespace std;
struct Node {
    Node* prev;
    Node* next;
    int val;
    Node(int v) : prev(nullptr), next(nullptr), val(v) {}
};
/*
隐含假设主要包括:
- [first, last) 是同一个链表上的连续区间
- position 不能位于 [first, last) 区间内部
- 链表是双向循环链表,带哨兵节点
- 调用者负责保证合法性
*/
// 把 [first, last) 截取到 pos 后面
void transfer(Node* pos, Node* first, Node* last) {
    last->prev->next = pos->next;
    pos->next->prev = last->prev;
    Node* tmp = first->prev;
    tmp->next = last;
    last->prev = tmp;
    first->prev = pos;
    pos->next = first;
}
我这个代码有错吗,怎么gpt老是说逻辑有问题,让它举反例举得又不好,说明不了我错了。deepseek说我写的没错,但是中间三句tmp的多余了。
// 把 [first, last) 截取到 pos 前面
void transfer(Node* pos, Node* first, Node* last) {
    pos->prev->next = first;
    Node* tmp = first->prev;
    first->prev = pos->prev;
    last->prev->next = pos;
    pos->prev = last->prev;
    tmp->next = last;
    last->prev = tmp;
}
// 源码的逻辑
// 把 [first, last) 截取到 pos 前面
void transfer(Node* pos, Node* first, Node* last) {
    if (pos != last) {
        last->prev->next = pos;
        first->prev->next = last;
        pos->prev->next = first;
        Node* tmp = pos->prev;
        pos->prev = last->prev;
        last->prev = first->prev;
        first->prev = tmp;
    }
}
这是把 [first, last) 截取到 pos 前面的代码,gpt也说我写的不对


// 把 [first, last) 截取到 pos 前面

我写的没毛病,gpt和deepseek都抽风了