ZBLOG

/*创建两个链表用于存放非负整数,创建另一个链表存放链表和 他们每位数字都是按照逆序方式存储,并且每个节点只能存储一位数字。 请求出两个链表相加,并以相同形式返回一个表示和的链表。*/ #include #include struct num { int position; struct num *next; }; struct num *create_phead(); void create_last_pnode(struc...

下面是一种更简洁易懂的方式来实现该功能:

#include <iostream>
using namespace std;

struct ListNode {
    int val;
    ListNode* next;
    
    ListNode(int x) : val(x), next(NULL) {}
};

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
    ListNode* dummyHead = new ListNode(0);
    ListNode* current = dummyHead;
    int carry = 0;
    
    while (l1 || l2 || carry) {
        int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + carry;
        carry = sum / 10; // 进位
        current->next = new ListNode(sum % 10); // 求余数作为当前节点的值
        current = current->next; // 移动到下一个节点
        
        if (l1)
            l1 = l1->next;
        if (l2)
            l2 = l2->next;
    }
    
    return dummyHead->next; // 返回链表头节点的下一个节点,即为相加后的链表
}

// 创建链表并输出
void createAndPrintList(int num, ListNode*& head) {
    head = NULL;
    while (num > 0) {
        int digit = num % 10;
        num /= 10;

        if (!head) {
            head = new ListNode(digit);
        } else {
            ListNode* newNode = new ListNode(digit);
            newNode->next = head;
            head = newNode;
        }
    }

	// 输出链表数字,按逆序方式输出
	cout << "链表:";
	ListNode* tempNode = head;
	while (tempNode) {
		cout << tempNode->val;
		tempNode = tempNode->next;
	}
	cout << endl;
}

int main() {
    int num1, num2;
    cout << "请输入第一个非负整数:";
    cin >> num1;
    cout << "请输入第二个非负整数:";
    cin >> num2;

	ListNode* l1 = NULL;
	ListNode* l2 = NULL;
	createAndPrintList(num1, l1);
	createAndPrintList(num2, l2);

	ListNode* result = addTwoNumbers(l1, l2);

	// 输出相加后的链表结果
	cout << "相加后的链表:";
	while (result) {
		cout << result->val;
		result = result->next;
	}
	cout << endl;

	return 0;
}

这段代码使用了 ListNode 结构来表示链表节点,每个节点包含一个值和指向下一个节点的指针。函数 addTwoNumbers 接受两个链表头节点作为参数,并返回相加后的链表头节点。

main 函数中,用户输入两个非负整数,然后将它们分别转换成逆序存储的链表。通过调用 addTwoNumbers 函数计算两个链表的和,并输出结果。

希望以上代码能够帮助你理解并实现题目所需功能。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8942

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?