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



题目:

示例:


思路:

有点相似于:链表相加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宝啊

愿所有美好如期而遇

相关推荐
Logic1011 小时前
C语言/数据结构贪心算法题解:买卖股票的最佳时机——一次交易最大利润(O(n)时间O(1)空间)
c语言·数据结构·贪心算法·数组·时间复杂度·算法题·股票交易
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出货币交易中的“独特面值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
ctlover1 小时前
数据结构:树
数据结构·python
景熙55233 小时前
14.Java 集合框架从入门到源码万字详解(含 ArrayList/LinkedList/HashMap 源码、泛型通配符、红黑树)
java·开发语言·数据结构·算法
SendTomo4 小时前
.ico透明图标在线生成下载平台深度解析
大数据·数据结构·数据库·数据仓库·个人开发
GG-_-Bond4 小时前
9.1kv存储持久化模拟面试
linux·c语言·数据结构·c++
程序员阿鹏4 小时前
双亲委派机制
java·jvm·数据结构·后端
runningshark4 小时前
数据结构-第二章-线性表及其顺序存储
数据结构
无敌贵点大王5 小时前
RTThread学习记录10——C语言实现面向对象的编程
c语言·stm32·学习·链表
郝学胜-神的一滴5 小时前
C++20模板元编程 04:变量模板 别名模板与模板Lambda实战
服务器·开发语言·数据结构·c++·程序人生