c语言写两个链表相加
时间: 2023-01-29 12:59:39 浏览: 134
c语言实现两个单链表的交叉合并方式
5星 · 资源好评率100%
在 C 语言中,可以使用链表来存储一组数据。要想实现两个链表相加的功能,需要创建两个链表,然后遍历每一个节点,将它们的值相加,并将结果存储在新的链表中。
例如,假设有两个链表,分别为 A 和 B,其中 A 的值为 2->4->3,B 的值为 5->6->4,那么我们可以创建新的链表 C,并使用以下代码来遍历 A 和 B 的每个节点,将它们的值相加并存储在 C 中:
```
struct Node {
int val;
struct Node* next;
};
struct Node* addTwoLists(struct Node* l1, struct Node* l2) {
struct Node* result = NULL;
struct Node* current = NULL;
int carry = 0;
while (l1 != NULL || l2 != NULL) {
int sum = carry;
if (l1 != NULL) {
sum += l1->val;
l1 = l1->next;
}
if (l2 != NULL) {
sum += l2->val;
l2 = l2->next;
}
carry = sum / 10;
sum = sum % 10;
if (result == NULL) {
result = (struct Node*) malloc(sizeof(struct Node));
result->val = sum;
result->next = NULL;
current = result;
} else {
current->next = (struct Node*) malloc(sizeof(struct Node));
current = current->next;
current->val = sum;
current->next = NULL;
}
}
if (carry > 0) {
current->next = (struct Node*) malloc(sizeof(struct Node));
current = current->next;
current->val = carry;
current->next = NULL;
}
return result;
}
```
在这段代码中,我们首先声明了一个名为 `Node` 的结构体,用于表示链表的节点。每个节点都
阅读全文