首页 > 其他分享 >leetcode328奇偶链表

leetcode328奇偶链表

时间:2023-07-11 15:45:51浏览次数:35  
标签:even 奇偶 head next 链表 leetcode328 odd 指针

思路:先将寄链表连接起来;再将偶链表连接起来;最后将寄链表和偶链表一起连起来。

首先需要一个指针结构体去记录下偶链表的表头。最后才能将两个链表连接起来。

 

ListNode* odd=head;
LisrNode* even=head->next;
ListNode* evenhead=head->next;//必须这么做,每个链表表头必须用另外的一个结构体保存,不能和任何的其他链表混合
while(even->next){
    odd->next=even->next;
    odd=odd->next;
    if(odd->next){
        even->next=odd->next;
        even=eve->next;
    }
}

//连接之前要将偶链表的最后尾部置为空指针
even->next=nullptr;
odd->next=evenhead;

当使用一个空指针的next时,会报错。

改进时间版,少用if

while(even&&even->next){
    odd->next=even->next;
    odd=odd->next;
    even->next=odd->next;
    even=even->next;
}
//相当于三个节点为一组执行这样的操作
//最后的even一定是空指针,不用最后将尾部置为空指针

 

标签:even,奇偶,head,next,链表,leetcode328,odd,指针
From: https://www.cnblogs.com/wangkaixin-yy/p/17544879.html

相关文章

  • 数据结构链表的基本操作
    /*数据结构单向链表基本操作节点类*/importjava.util.Iterator;importjava.util.function.Consumer;publicclassshujujiegouimplementsIterable<Integer>{//整体privateNodehead;//头指针@OverridepublicIterator<Integer>iterator(){......
  • LeetCode 206. 反转链表
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,ListNode*next):val(x),next(next......
  • 链表补充题目
    packageSecondBrush.LinkedList;/***83.删除排序链表中的重复元素*给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。**//***这个题目自己就直接做出来了,只是循环条件少写了一个cur.next!=null*首先这道题目......
  • C语言:数据结构之单链表(二)
    上一篇随笔谈了谈单链表是什么东西,然后进行了初始化,这篇随笔就开始对其进行操作了,首先是增,删,改,查的增。增,顾名思义就是要增加新的元素,单链表是链式的,那就要考虑怎么去加新元素,有三种,从头部添加,从尾部添加,从中间添加。先说说从尾部添加,这个比较好理解,直接在尾部放一个结点......
  • LeetCode 160. 相交链表
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*getIntersectionNode(ListNode*headA,ListNode*headB){......
  • 12.9 链表 - 综合汇总----???
    demo本章节综合汇总信息,在这个demo都可以体现----看的有点懵~!!~interfaceILink<E>{ //链表公共标准 /** *向链表中进行数据的存储,每个链表所保存的数据类型相同,不允许保存null数据 *@parame要保存的数据 */ publicvoidadd(Ee); /** *获取链表中集合......
  • Java源码系列4——HashMap扩容时究竟对链表和红黑树做了什么?
    Photobyhippopx.com我们知道HashMap的底层是由数组,链表,红黑树组成的,在HashMap做扩容操作时,除了把数组容量扩大为原来的两倍外,还会对所有元素重新计算hash值,因为长度扩大以后,hash值也随之改变。如果是简单的Node对象,只需要重新计算下标放进去就可以了,如果是链表和红黑......
  • 数据结构--单向链表
    如果对于顺序表的结构已经大致了解,那么对单向链表的学习就会轻松一些。顺序存储中的数据因为挤在一起而导致需要成片移动,那很容易想到的解决方案是将数据离散地存储在不同内存块中,然后在用来指针将它们串起来。这种朴素的思路所形成的链式线性表,就是所谓的链表。顺序表和链表在内存......
  • 【LeetCode剑指offer#05】回文链表的两种解法+删除链表中间节点(链表的基本操作)
    回文链表给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false提示:链表中节点数目在范围[1,105]内0<=Node.val<=9思路将值复制到数组中后用双指针......
  • 【leetcode】【1474】【删除链表 M 个节点之后的 N 个节点】
    c++第一个方法#include<algorithm>#include<iostream>#include<memory>#include<vector>//Definitionforsingly-linkedlist.structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}Li......