![]() |
1
9
重新排列指针。交换数据项可能会产生副作用。尤其是,您可能在函数之外的某个位置存储了对节点的引用,并且 通常 当您重新排列列表中节点的顺序时,您不希望持有对节点的引用的人突然发现节点指向新数据。这是因为通常,节点的重要特征是它指向的数据 不 它在列表中的位置。 |
![]() |
2
0
标准交换是通过指针重新排列完成的,没有副作用,当然速度更快:
|
![]() |
3
0
根据存储在链接列表元素中的内容的类型,交换元素的实际内容是很困难的(例如,考虑不同长度字符串的链接列表),因此更容易交换指向下一个和上一个列表项的指针。 |
![]() |
4
0
取决于您如何分配内容。 如果您正在存储指向内容的指针,那么切换内容就没什么大不了的了。如果您的节点中有一个大型结构,那么切换指针可能比复制整个内容更有效。 |
![]() |
5
0
我倾向于站在大多数人已经说过的一边。一点背景可能会有所帮助:交换指针是可以保证工作的,而交换对象可能并不总是看起来那么简单。想想可能会创建的时间段,而异常(我的意思是一般的,而不是C++语言特性的方式)可能会发生,实际上把容器(列表)放在一个不希望的状态。在容器中寻找不变量——这意味着交换应该使列表大小保持不变,并且元素保持不变并在其上进行设计。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |