c++链表插入swap
C++ Link list insert swop
我想把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;
现在您正在尝试迭代列表的末尾(它只有两个节点)。解引用一个无效的指针,这会导致未定义的行为;如果你得到的只是一个访问冲突错误,那你就很幸运了。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 插入或删除时获取usb的dos_name
- 叮叮当当在修复时插入多个"覆盖"说明符
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- 链表c++插入,所有情况都已检查,但没有任何工作
- 将重物插入std::map
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- c++链表插入swap