数据结构:单向链表系列7--交换相邻两个节点2(交换链域/指针域)

Posted passedbylove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构:单向链表系列7--交换相邻两个节点2(交换链域/指针域)相关的知识,希望对你有一定的参考价值。

 

给定一个单向链表,编写函数交换相邻 两个元素

输入: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7

输出: 2 -> 1 -> 4 -> 3 -> 6 -> 5 -> 7

 

输入: 1 -> 2 -> 3 -> 4 -> 5 -> 6

输出: 2 -> 1 -> 4 -> 3 -> 6 -> 5

通过观察发现:当输入的与元素个数是单数的时候,最后一位不参与交换。 

当链表节点中的数据字段不多的时候我们可以交换数据域的指针来实现相邻两个节点的交换

当数据域太多时操作成本将非常昂贵,该情形下,更改链域(指针域)将是一个更好的解决方法。

以下是代码的实现:

c语言:

 

来源:https://www.geeksforgeeks.org/pairwise-swap-elements-of-a-given-linked-list-by-changing-links/

以上是关于数据结构:单向链表系列7--交换相邻两个节点2(交换链域/指针域)的主要内容,如果未能解决你的问题,请参考以下文章

1.7交换链表中的相邻节点

数据结构:单向链表系列8--反转链表

块状链表

每天AC系列:两两交换链表中的节点

Leetcode swap-nodes-in-pairs(链表 交换相邻节点)

[数据结构与算法]给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。