当前位置: 首页 > news >正文

公司做网站的价格江阴网站免费搭建

公司做网站的价格江阴,网站免费搭建,网站制作详细教程,做电子购物网站需要申请Problem: 2. 两数相加 文章目录 思路解题方法Code一些感想 思路 主要是一一相加和逆序的方式存储 先说逆序储存,看下图 我们先声明出指针p和指针q,还有指针head(主要用于return上而已),然后进行一系列操作&#xff0c…

Problem: 2. 两数相加

文章目录

  • 思路
  • 解题方法
  • Code
  • 一些感想

思路

主要是一一相加和逆序的方式存储
先说逆序储存,看下图
我们先声明出指针p和指针q,还有指针head(主要用于return上而已),然后进行一系列操作,之后,p = q,之后的操作就是对q进行,至于p,只做一个动作,p = q
逆序储存的思想

	int flag = 0;struct ListNode *p = NULL, *q = NULL, *head = NULL;while(l1 != NULL && l2 != NULL) {if(flag == 0) {flag = 1;p = (struct ListNode*)malloc(sizeof(struct ListNode));p->next = NULL;head = p;} else {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->next = NULL;p->next = q;p = q;}l1 = l1->next;l2 = l2->next;}

至于相加嘛!好说,将对应的两个数加起来,然后检查是否大于9,如果是,则要保留个位,并进一位(也就是将十位数的部分放入下一个相加的过程中),以指针p的部分为例——指针q的部分也一样。

p->val = l1->val + l2->val;
if(p->val > 9) {last = p->val / 10;p->val %= 10;
} else last = 0;

但是,要知道,l1与l2终会到达null,所以,对于剩余的部分也只是解决前面的“进一位”遗留的问题而已.

    while(l1 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l1->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l1 = l1->next;}
    while(l2 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l2->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l2 = l2->next;}

到最后,倘若还存在进一位,就得要再建一个节点。

    if(last > 0) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;}

解题方法

由思路可知

Code

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode *p = NULL, *q = NULL, *head = NULL;int flag = 0, last;while(l1 != NULL && l2 != NULL) {if(flag == 0) {flag = 1;p = (struct ListNode*)malloc(sizeof(struct ListNode));p->val = l1->val + l2->val;if(p->val > 9) {last = p->val / 10;p->val %= 10;} else last = 0;p->next = NULL;head = p;} else {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l1->val + l2->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;}l1 = l1->next;l2 = l2->next;}while(l1 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l1->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l1 = l1->next;}while(l2 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l2->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l2 = l2->next;}if(last > 0) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;}return head;
}

一些感想

其实,当时在解决这道题的时候,碰到过这样的问题

Line 70: Char 15: runtime error: member access within misaligned address 0xbebebebebebebebe for type 'struct ListNode', which requires 8 byte alignment [ListNode.c]0xbebebebebebebebe: note: pointer points here<memory cannot be printed>

后来,在我看了AuthurLEE的文章之后,我才知道原来是忘记在初始化的时候,让指针指向NULL了(包括head指针,还有结构体里面的next)

http://www.tj-hxxt.cn/news/10586.html

相关文章:

  • 百度网站ip地址曼联vs曼联直播
  • 做网站店铺装修的软件口碑营销的方法
  • 政府网站建设 问题百度官方网平台
  • 软件开发是什么职业佛山做优化的网络公司
  • 七牛云使用wordpressseo网站平台
  • 谁知道陕西省建设监理协会的网站河南郑州最近的热搜事件
  • 住房城乡建设证书查询seo工资待遇怎么样
  • 重?c网站开发麒麟seo软件
  • 网站做301顶级域名需要绑定连云港seo
  • 泰州网站建设报价网络服务投诉平台
  • 网站收费板块怎么做aso优化{ }贴吧
  • 拼多多网站建设的目的网站的友情链接是什么意思
  • 怎么在360网站做词条写一篇软文1000字
  • 诸暨城乡与建设局网站百度竞价推广开户价格
  • WordPress怎么添加音乐谷歌seo顾问
  • 如何选择网站模板优化排名推广教程网站
  • 宜昌外贸网站建设优化推广免费云服务器
  • 西宁专业网站建设公司百度推广登录入口
  • 安庆有做网站的吗如何自创网站
  • 推广做网站南充国内搜索引擎
  • 大疆网站建设app推广拉新接单平台
  • 邯郸网站制作公司微信营销推广的方式有哪些
  • 做网站需要多久电商培训机构有哪些?哪家比较好
  • 房子竣工验收在哪个网站查网站建设优化哪家公司好
  • 成人高考成绩查询百度运营优化师
  • 想做一个自己的网站怎么做的谷歌推广怎么开户
  • 网站举报能不能查到举报人网络广告营销策划方案
  • 网页游戏平台哪个好百度推广seo
  • 凡科网多页网站怎样做pc网站优化排名软件
  • 怎么把网站源码扒下来网络销售怎么找客户