链表是一种常见的线性数据结构。它被定义为一个节点序列,对于通常意义上的链表来说,其中除了最后一个节点外的每个节点都包含有下一个节点的地址。整个序列就好像一串珠链一样,是“线性”排列的。实践中,链表的种类有很多,例如:单向链表、单向循环链表、双向循环链表等。本文主要以LeetCode中的题目为例,演示链表类问题的求解技巧与方法。同时,推荐参考《算法之美:隐匿在数据结构背后的原理》一书中的相关章节以了解更多本文未能充分尽述的细节(该书中的代码以C++写成)。
首先,引用《算法之美》一书中关于链表的部分内容,希望帮助读者建立对链表的基本认识。
题目24:Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head.(对于一个给定的链表,把其中每对儿相邻节点,交换位置)