算法——两数相加

avatar
作者
筋斗云
阅读量:0

2两数相加

下面展示一些 内联代码片

/**  * Definition for singly-linked list.  * struct ListNode {  *     int val;  *     ListNode *next;  *     ListNode() : val(0), next(nullptr) {}  *     ListNode(int x) : val(x), next(nullptr) {}  *     ListNode(int x, ListNode *next) : val(x), next(next) {}  * };  */ class Solution { public:     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {         ListNode* sumhead = nullptr; // 初始化头指针为nullptr         ListNode* current = nullptr; // 初始化当前节点为nullptr         int c = 0; // 进位标志          // 遍历两个链表,进行加法运算         while (l1 != nullptr || l2 != nullptr || c > 0) {             int x = (l1 != nullptr) ? l1->val : 0;             int y = (l2 != nullptr) ? l2->val : 0;             int tempSUM = x + y + c;              // 处理进位             if (tempSUM >= 10) {                 c = 1;                 tempSUM -= 10;             } else {                 c = 0;             }              // 如果sumhead是nullptr,说明这是第一个节点             if (!sumhead) {                 sumhead = new ListNode(tempSUM);//动态分配新节点                 current = sumhead;             } else {                 // 否则,在current后面添加新节点                 current->next = new ListNode(tempSUM);                 current = current->next;             }              // 更新链表指针             if (l1 != nullptr) l1 = l1->next;             if (l2 != nullptr) l2 = l2->next;         }          return sumhead;     } }; 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!