当前位置:网站首页 > Go语言开发 > 正文

单向链表反转c语言(单向链表反向)



1. 2074. 反转偶数长度组的节点 - 力扣(LeetCode)

//思路:双指针遍历。将链表存入数组中,通过双指针下标遍历定位需要反转的组。

typedef struct ListNode LN;

void Reverse(int* arr,int left,int right)//反转函数

{

    while(left<right)

    {

        int tmp = arr[left];

        arr[left] = arr[right];

        arr[right] = tmp;

        left++;

        right--;

    }

}

struct ListNode* reverseEvenLengthGroups(struct ListNode* head)

{

    LN* pmove = head;

    int arr[] = {0};

    int count = 0;

    while(pmove)//将链表存入数组中

    {

        arr[count++] = pmove->val;

        pmove = pmove->next;

    }

    int tmp = 0;

    int flag = 1;

    int left = 0;

    int right = 0;

    while(right<count)

    {

        if((right-left)%2)//如果right下标减去left下标的值为奇数,说明组的长度为偶数,需要反转

        {

            Reverse(arr,left,right);

        }

        flag++;

        left = right+1;//定位每个组的头尾

        right+=flag;

    }

    if((count-1-left)%2)//处理最后一组,right可能越界,因此右指针为数组尾

    {

        Reverse(arr,left,count-1);

    }

    pmove = head;

    count = 0;

    while(pmove)//将数组存回链表

    {

        pmove->val = arr[count++];

        pmove = pmove->next;

    }

    return head;

}

到此这篇单向链表反转c语言(单向链表反向)的文章就 介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在 编程的领域有一番成就!

版权声明


相关文章:

  • 苹果开发者账号过期了(苹果开发者账号过期了的续费流程)2025-11-15 14:54:09
  • bsp 驱动(bsp驱动开发和linux驱动开发)2025-11-15 14:54:09
  • 编程入门指南(编程入门指南新手学哪门语言)2025-11-15 14:54:09
  • linux内核驱动开发工程师(linux驱动软件开发工程师)2025-11-15 14:54:09
  • latex用什么软件编译(latex用的什么语言)2025-11-15 14:54:09
  • 预训练语言模型是指哪种模型(预训练语言模型是什么)2025-11-15 14:54:09
  • 驱动开发和嵌入式开发的差别是什么(嵌入式和驱动开发区别)2025-11-15 14:54:09
  • 预训练语言模型的前世今生(预训练语言模型 pdf)2025-11-15 14:54:09
  • 程序员入门要学什么(程序员入门学什么语言)2025-11-15 14:54:09
  • 预训练语言模型pdf(预训练语言模型是指哪种模型)2025-11-15 14:54:09
  • 全屏图片