如何做点击赚钱的网站,外贸网站哪家好,网络推广方法,室内设计培训机构排名前十一:题目 二:思路
思路: 1.分析题意 这是相邻结点进行交换 如果是4个结点 那么1和2交换 3和4交换 如果是3个结点 那么就1和2进行交换 3不动 2.这里我们定义一个虚拟头节点方便操作#xff0c;我们只需三步实现结点的交换 1:让虚拟结点指向第二个结点(进行交换的结点我…一:题目 二:思路
思路: 1.分析题意 这是相邻结点进行交换 如果是4个结点 那么1和2交换 3和4交换 如果是3个结点 那么就1和2进行交换 3不动 2.这里我们定义一个虚拟头节点方便操作我们只需三步实现结点的交换 1:让虚拟结点指向第二个结点(进行交换的结点我把其分为第一个结点和第二个结点) 2:第二个结点指向第一个结点(这里需要定义一个临时节点 保存第一个结点) 3:第一个结点指向第三个结点(这里需要定义一个临时结点 保存第三个结点) 3.将定义的虚拟结点往后移动两个结点开始新的交换
三:上码
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* swapPairs(ListNode* head) {/**思路:1.分析题意 这是相邻结点进行交换 如果是4个结点 那么1和2交换 3和4交换如果是3个结点 那么就1和2进行交换 3不动2.这里我们定义一个虚拟头节点方便操作我们只需三步实现结点的交换1:让虚拟结点指向第二个结点(进行交换的结点我把其分为第一个结点和第二个结点)2:第二个结点指向第一个结点(这里需要定义一个临时节点 保存第一个结点)3:第一个结点指向第三个结点(这里需要定义一个临时结点 保存第三个结点)3.将定义的虚拟结点往后移动两个结点开始新的交换*/ListNode* node new ListNode(2);//定义一个虚拟结点node-next head;//虚拟结点和链表连上了ListNode* cur;//这里我们定义一个新的结点 方便我们进行交换的操作 从而不影响node和链表的联系cur node;while(cur-next ! NULL cur-next-next ! NULL){ListNode *temp cur-next;//定义一个临时结点 保存指向第一个结点的指针ListNode *temp1 cur-next-next-next;//定义一个临时结点 保存第指向第三个结点的指针cur-next cur-next-next;//第一步 虚拟结点指向第二个结点cur-next-next temp;//第二步 第二个结点指向第一个结点cur-next-next-next temp1;//第三步 此时cur-next 指向第二个结点 cur-next-next 指向的是第一个结点 所以该 cur-next-next-next 指向第三个结点//往后跳两个结点cur cur-next-next;}return node-next;}
};