* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/ typedef struct ListNodep {
int val;
struct ListNodep *next;
}ListNode; ListNode* addTwoNumbers(ListNode* I1, ListNode* I2) {
ListNode *rootp = NULL;
ListNode *listp = NULL;
int value = 0;
int varin = 0; if(I1 == NULL && I2 == NULL) return rootp; listp = (ListNode *)malloc(sizeof(ListNode));
rootp = listp;
listp->val = 0;
listp->next = NULL; while(I1 != NULL || I2 != NULL || varin!= 0){ if(I1 == NULL && I2 != NULL) value = I2->val + varin; if(I1 != NULL && I2 == NULL) value = I1->val + varin; if(I2 != NULL && I1 != NULL) value = I1->val + I2->val + varin; if(I1 == NULL && I2 == NULL) value = varin; varin = 0; if(value >= 10){
varin = value /10;
value = value %10;
} //此处需要注意,此处需要注意当当前链表已经为NULL后,他指向的空链表
//不能够在往下操作了,需要直接在给当前指针为空链表
if(I1 == NULL) I1 = NULL;
else I1 = I1->next; if(I2 == NULL) I2 = NULL;
else I2 = I2->next; listp->val = value; if(I1 != NULL || I2 != NULL || varin != 0){
listp->next = (ListNode *)malloc(sizeof(ListNode));
listp = listp->next;}
else
{
listp->next = NULL;
}
} return rootp;
}

  

leetcode问题描述 :

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------

这里的两个链表数据相加问题可不是那么简单,主要有一下几种情况

1、如果两个链表长度是一样的,就将链表中的元素相加输出即可

2、如果两个链表的长度不是一样的,就要短链表位的补齐,如果不是使用补齐的方法,就需要考虑在逻辑上消除这种现象

3、如果两个链表长度一样长,但是在最后一个元素相加出现了进位,那么就需要在最后一个链表上在添加一个链表,

所以其实这个问题还是蛮复杂的

下面是在c中运行时的代码 :

// list.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define ListDeep 1
typedef struct NODE{
NODE *P;
int data;
}ListTypr;
ListTypr list1[ListDeep];
ListTypr list2[ListDeep];
//---------------------------------------------------------------
void initlist(ListTypr *I1 , ListTypr *I2 , int listdeep){
for(short i = ; i < listdeep ; i++){
I1->data=;
if(i == listdeep-) I1->P= NULL;
else I1->P= I1+;
I1 = I1->P;
}
for(short i = ; i < listdeep ; i++){
I2->data=;
if(i == listdeep-) I2->P= NULL;
else I2->P= I2+;
I2 = I2->P;
}
}
ListTypr* addTwoNumbers(ListTypr* l1, ListTypr* l2) {
ListTypr *rootp = NULL;
ListTypr *listp = NULL;
int value = ;
int varin = ;
if(l1 == NULL && l2 == NULL) return rootp;
listp = (ListTypr *)malloc(sizeof(ListTypr));
listp->data = ;
listp->P = NULL;
rootp = listp;
while(l1 != NULL || l2 != NULL || varin != ){
if(l1 != NULL && l2 == NULL) value = l1->data + varin;
if(l1 == NULL && l2 != NULL) value = l2->data + varin;
if(l1 != NULL && l2 != NULL) value = l1->data + l2->data + varin;
if(l1 == NULL && l2 == NULL) {
value = varin;
varin = ;
}
if(value >= ){
varin = value / ;
value = value % ;
}
if(l1 == NULL) l1 = NULL;
else l1 = l1->P;
if(l2 == NULL) l2 = NULL;
else l2 = l2->P;
listp->data = value;
if(l1 != NULL || l2 != NULL || varin != ){
listp->P = (ListTypr *)malloc(sizeof(ListTypr));
listp = listp->P;}
else{
listp->P = NULL;
}
}
return rootp;
}
int _tmain(int argc, _TCHAR* argv[])
{
short listdeep = ListDeep;
ListTypr * plistresult = NULL;
ListTypr * rep = NULL;
int resultmatrix[];
short i = ;
initlist(&list1[] , &list2[] , listdeep);
plistresult = addTwoNumbers(&list1[] , &list2[]);
while(plistresult != NULL){
resultmatrix[i] = plistresult->data;
plistresult = plistresult->P;
i = i + ;
}
while();
return ;
}

关于leetcode中链表中两数据相加的程序说明的更多相关文章

  1. 【LeetCode题解】2_两数相加

    目录 [LeetCode题解]2_两数相加 描述 方法一:小学数学 思路 Java 代码(非递归写法) Java 代码(递归写法) Python 代码(非递归写法) [LeetCode题解]2_两数相 ...

  2. Leetcode(2)两数相加

    Leetcode(2)两数相加 [题目表述]: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两 ...

  3. Leetcode(2)-两数相加(包含链表操作的注意事项)

    给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...

  4. LeetCode -- 推断链表中是否有环

    思路: 使用两个节点.slow和fast,分别行进1步和2步.假设有相交的情况,slow和fast必定相遇:假设没有相交的情况,那么slow或fast必定有一个为null 相遇时有两种可能:1. 仅仅 ...

  5. leetcode刷题2:两数相加add_two_numbers

    题目:两数相加 (难度:中等) 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字. 将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以 ...

  6. LeetCode Add Two Numbers 两个数相加

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  7. LeetCode题解002:两数相加

    两数相加 题目 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字 如果,我们将这两个数相加起来,则会返回一个新的链表 ...

  8. C语言链表之两数相加

    题目描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表 ...

  9. Leetcode(二)两数相加

    两数相加 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链 ...

随机推荐

  1. Hadoop的核心组件和生态圈

    摘要:Hadoop是一个由Apache基金会所开发的分布式系统基础架构.Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数 ...

  2. zjuoj 3780 Paint the Grid Again

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780 Paint the Grid Again Time Limit: 2 ...

  3. internet选项菜单灰色

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer”下,然后在“Internet Explorer”上单击右键,在选择“删除”.

  4. mui小总结

    下拉刷新 第一: mui.init({ pullRefresh: { container: '#pullrefresh', up: { contentrefresh: '正在加载...', callb ...

  5. HttpHander与httpModel配置与应用

    ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll, ...

  6. EF并非我们想象的那么智能

    我之前在项目中用EF读取一个视图的数据,页面展示出现重复数据,当时百思不得其解,跟踪代码,数据读取时取到的数据并不是重复,为什么在前台显示就有重复了呢,我当时就在业务层将数据去重,但取到的数据跟数据库 ...

  7. 妈妈再也不担心我的编码问题了。中文编码融汇贯通,windows,django,python,java,html 【转】

    http://blog.csdn.net/farmer_cc/article/details/41830999 HTML编码:html文件是utf-8编码的,不确定的话用记事本打开,另存为的时候就能够 ...

  8. >Python下使用subprocess中文乱码的解决方案

    # -*- coding: CP936 -*- import subprocess cmd="cmd.exe" begin=101 end=110 while begin<e ...

  9. 今天开始Swift学习

    今天开始Swift学习  在此记录笔记  以备之后查阅! allenhuang

  10. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...