题意理解
给定两个用链表表示的整数,求它们的和,同样用链表表示。
问题分析
单链表数据结构
整数的单链表的节点结构是一个整数val,一个指针next,一个构造函数ListNode(int val):val(x),next(NULL) {}.
算法思路如下:
用指针p,q分别指向两个整数链表,设置一个哑结点head,设置一个整数变量carry用于保存进位。指针curr指向新节点。
同时顺序遍历两个整数链表,直到两个链表都空为止。当有一个链表不空时,获取当前指针的结点的值,如果当前指针为空就设置为0,将两个值和进位相加,和对10取余得到的数生成新节点,进位是除10的商。然后将新节点挂接到新链表上。如果两个整数指针不为0,就后移一位。
最后范围head的下一结点。
其他
链表简单,但是用c++语言来写不熟练,这个算法看着不难,但思路这么精炼还是不容易。
链接
无