首页 > 编程语言 >【C++】两两交换链表中的节点

【C++】两两交换链表中的节点

时间:2024-02-12 17:12:00浏览次数:31  
标签:head dummyHead ListNode cur C++ next 链表 new 节点

#include <iostream>
#include <stack>
using namespace std;
struct ListNode {
  int val;
  ListNode* next;
  ListNode(int x) :val(x), next(nullptr) {}
};
ListNode* swapPairs1(ListNode* head) {
  ListNode* dummyHead = new ListNode(0);
  dummyHead->next = head;//使用虚拟头节点指向head
  ListNode* cur = dummyHead;
  while (cur->next && cur->next->next) {
    ListNode* tmp = cur->next;
    ListNode* tmp1 = cur->next->next->next;
    cur->next = cur->next->next;
    cur->next->next = tmp;
    tmp->next = tmp1;
    cur = cur->next->next;
  }
  return dummyHead->next;
}
int main() {
  ListNode* head = new ListNode(1);
  head->next = new ListNode(2);
  head->next->next = new ListNode(4);
  head->next->next->next = new ListNode(8);

  ListNode* swapList = swapPairs1(head);
  std::cout << "Merged List: ";
  printList(swapList);
  // 释放内存  
  ListNode* current = swapList;
  while (current) {
    ListNode* next = current->next;
    delete current;
    current = next;
  }

  return 0;
}

标签:head,dummyHead,ListNode,cur,C++,next,链表,new,节点
From: https://www.cnblogs.com/smartlearn/p/18013974

相关文章

  • 12.Jenkins节点环境变量
    Jenkins节点环境变量定义 Jenkins在构建的时候,如果使用节点构建可能存在一些个性化环境变量,此时需要在节点中单独管理节点环境变量配置 节点工具配置节点环境变量配置节点工具配置 节点工具的使用顺序节点工具>全局工具节点工具配置方式先配置全......
  • 【C++】给定两个增序的链表,试将其合并成一个增序的链表。
    给定两个增序的链表,试将其合并成一个增序的链表。#include<iostream>#include<stack>usingnamespacestd;structListNode{intval;ListNode*next;ListNode(intx):val(x),next(nullptr){}};voidprintList(ListNode*head){while(head){std:......
  • 【C++】假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
    题目:假设链表中每一个节点的值都在0-9之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。数据范围:0≤n,m≤1000000,链表任意值0≤val≤9要求:空间复杂度O(n),时间复杂度O(n)例如:链表1为9->3->7,链表2为6->3,最后生成新的结果链表......
  • 在k8S中,kubelet监控Worker节点资源是使用什么组件来实现的?
    在Kubernetes集群中,kubelet是工作节点上的核心服务,它负责确保Pods及其容器按照预期的状态运行。为了实现这一目标,kubelet依赖于内置的cAdvisor组件来进行资源监控。cAdvisor(ContainerAdvisor)是一个开源的容器监控工具,它集成在kubelet内部,随kubelet一同启动。cAdvisor的主要功能包......
  • 在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
    在Kubernetes(k8S)中,Scheduler使用两种主要的算法阶段来决定将Pod绑定到哪个worker节点上:预选算法(Predicates)预选阶段的主要目标是过滤掉不满足调度条件的节点。Scheduler会根据一系列预定义的预选策略对所有可用节点进行筛选。这些策略可能包括但不限于:检查节点上的资源是否......
  • C++11 用户定义字面量
    C++11用户定义字面量C++11引入了一项功能,称为用户自定义字面量(user-definedliterals),它允许程序员定义自己的字面量后缀,以扩展现有的字面量语法。内置字面量C++自带4种字面量:整形123浮点型12.3字符'1'字符串"123"字面量又可添加后缀来表明具体类型,建议大写:无符......
  • 【C++】STL string类例题新思路记录(编写一个程序,告诉用户输入的句子包含多少个元音字
    题干:编写一个程序,告诉用户输入的句子包含多少个元音字母。 方案一:1、创建一个普通函数,依次传入5个元音字母对查找字符串进行检测。2、函数通过依次传入的单个元音字母,循环查找整个字符串最后返回统计值。1#include<string>2#include<iostream>3usingnamespace......
  • 力扣递归 两道简单题合成一道中等题之148. 排序链表
    递归归并排序,先找到终点,再合并两个链表 给你链表的头结点 head ,请将其按升序排列并返回排序后的链表。 示例1:输入:head=[4,2,1,3]输出:[1,2,3,4]示例2:输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]示例3:输入:head=[]输出:[]/** *Definitionforsingl......
  • 力扣快慢双指针之876. 链表的中间结点
    给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例1:输入:head=[1,2,3,4,5]输出:[3,4,5]解释:链表只有一个中间结点,值为3。示例2:输入:head=[1,2,3,4,5,6]输出:[4,5,6]解释:该链表有两个中间结点,值分别为3......
  • 代码随想录算法训练营第十六天| 104.二叉树的最大深度 559.n叉树的最大深度 111.二
    104.二叉树的最大深度  题目链接:104.二叉树的最大深度-力扣(LeetCode)n叉树也一样思路:我的普通递归方法classSolution{public:intdepth(TreeNode*node,intd){intl=0,r=0;if(node->left==NULL&&node->right==NULL)returnd;if(node-......