c++链表插入swap

C++ Link list insert swop

本文关键字:swap 插入 链表 c++      更新时间:2023-10-16

我想把2插入4,4插入2。我用这个开关出错了。我该如何修改下面的代码来获得swop.

#include <iostream>
struct nodeType
{
    int info ;
    nodeType* link ;
};
int main()
{
    nodeType* ptr ;
    nodeType* list ;
    ptr = new nodeType;
    ptr->info = 1;
    list = new nodeType;
    ptr->info = 2;
    list->link = ptr;
    ptr = new nodeType;
    ptr->info = 3;
    ptr = new nodeType;
    list->info = 4;
    ptr->link = NULL;
    list->link->link->link = ptr;
    unsigned count = 1 ;
    ptr = list ;
    while ( ptr )
    {
        std::cout << "Node #" << count++ << ':' << ptr->info << 'n' ;
        ptr = ptr->link ;
    }
}

我已经尝试了各种方法来获得交换发生,但我得到编译器错误。由于

nodeType* ptr ;
nodeType* list ;
ptr = new nodeType;
ptr->info = 1;

指针ptr现在指向包含1的节点。

list = new nodeType;
ptr->info = 2;

现在list指向一个节点,ptr指向的节点包含2

list->link = ptr;

现在一个节点连接到另一个。

ptr = new nodeType;
ptr->info = 3;

现在ptr指向另一个节点,包含3

ptr = new nodeType;

现在ptr指向另一个节点,包含3的节点已经丢失。

list->info = 4;

现在列表中的第一个节点包含4

ptr->link = NULL;

list->link->link->link = ptr;

现在您正在尝试迭代列表的末尾(它只有两个节点)。解引用一个无效的指针,这会导致未定义的行为;如果你得到的只是一个访问冲突错误,那你就很幸运了。