C ++链接列表插入swop

时间:2014-03-24 21:31:26

标签: c++ linked-list

我想将2插入4和4插入2.我在swop中遇到错误。我如何修复下面的代码来获取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 ;
    }
}

我已经尝试了各种方法来实现swop,但是我遇到了编译器错误。 感谢

1 个答案:

答案 0 :(得分:0)

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;

现在你试图遍历列表的末尾(只有两个节点)。您取消引用无效指针,这会导致未定义的行为;如果你得到的只是一个访问冲突错误,那么你很幸运。

在尝试在列表中间进行交换之前,您必须更多地学习指针。