翻倍以链表形式表示的数字



题目:

示例:


思路:

有点相似于:链表相加II,这道题我们仍然有进位,但不同的是,链表相加我们选择了开辟新节点,这道题我们选择反转两次链表,开始一次,结束一次。

单链表的翻转详细讲解:反转一个单链表(<---点击可看详解)


题解代码:

复制代码
struct ListNode* reverse(struct ListNode* head)
{
    struct ListNode* n1 = NULL;
    struct ListNode* n2 = head;
    struct ListNode* n3 = NULL;
    if(n2)
	    n3 = n2->next;
 
    while (n2)
    {
	    n2->next = n1;
	    n1 = n2;
	    n2 = n3;
	    if (n3)
		    n3 = n3->next;
    }
 
    return n1;
}

struct ListNode* doubleIt(struct ListNode* head)
{
    struct ListNode* prev = NULL;
    struct ListNode* Back = reverse(head);

    head = Back;
    int add = 0;

    while(Back)
    {
        int temp = Back->val * 2 + add;
        add = temp / 10;

        prev = Back;

        Back->val = temp % 10;
        Back = Back->next;
    }

    if(add > 0)
    {
        struct ListNode* newnode = malloc(sizeof(struct ListNode));
        newnode->val = add;
        newnode->next = NULL;

        prev->next = newnode;
    }

    head = reverse(head);
    return head;
}

个人主页:Lei宝啊

愿所有美好如期而遇

相关推荐
yyy(十一月限定版)10 小时前
c语言——二叉树
c语言·开发语言·数据结构
落羽的落羽11 小时前
【C++】深入浅出“图”——图的基本概念与存储结构
服务器·开发语言·数据结构·c++·人工智能·机器学习·图搜索算法
25Qi导航11 小时前
专业期刊发表公司
链表
LYFlied11 小时前
【每日算法】LeetCode 104. 二叉树的最大深度
前端·算法·leetcode·面试·职场和发展
IT方大同11 小时前
循环结构的功能
c语言·数据结构·算法
sin_hielo11 小时前
leetcode 955
数据结构·算法·leetcode
一起养小猫11 小时前
LeetCode100天Day4-盛最多水的容器与两数之和II
java·数据结构·算法·leetcode
Swift社区12 小时前
LeetCode 453 - 最小操作次数使数组元素相等
算法·leetcode·职场和发展
八月ouc12 小时前
Python实战小游戏(二): 文字冒险游戏
数据结构·python·文字冒险
EXtreme3512 小时前
【数据结构】二叉树进阶:层序遍历不仅是按层打印,更是形态判定的利器!
c语言·数据结构·二叉树·bfs·广度优先搜索·算法思维·面试必考