我想将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,但是我遇到了编译器错误。 感谢
答案 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;
现在你试图遍历列表的末尾(只有两个节点)。您取消引用无效指针,这会导致未定义的行为;如果你得到的只是一个访问冲突错误,那么你很幸运。
在尝试在列表中间进行交换之前,您必须更多地学习指针。