| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 a327904410 于 2022-3-14 15:43 编辑  
- #include<stdio.h>
 
 - #include<stdlib.h>
 
  
- struct ListNode {
 
 -         int val;
 
 -         struct ListNode* next;
 
 - };
 
  
- void InitNode(struct ListNode** l) {
 
 -         *l = (struct ListNode*)malloc(sizeof(struct ListNode));
 
 -         if (*l == NULL) {
 
 -                 printf("分配空间失败!");
 
 -         }
 
 -         (*l)->next = NULL;
 
 - }
 
  
- // 把数组里数据插进链表
 
 - int InsNode(struct ListNode* l, int *sz, int len) {
 
 -         struct ListNode* p = l;
 
  
-         int i;
 
 -         for (i = 0; i < len; i++) {
 
 -                 struct ListNode* s;
 
 -                 s = (struct ListNode*)malloc(sizeof(struct ListNode));
 
 -                 s->val = sz[i];
 
 -                 s->next = p->next;
 
 -                 p->next = s;
 
 -         }
 
 -         return 1;
 
 - }
 
  
- struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
 
 -         int tmp = 0;
 
 -         struct ListNode* p1 = l1->next, * p2 = l2->next;
 
 -         struct ListNode* sum;
 
 -         InitNode(&sum);
 
 -         while (p1 != NULL || p2 != NULL) {
 
 -                 if (l1 == NULL) {
 
 -                         return l2;
 
 -                 }
 
 -                 if (l2 == NULL) {
 
 -                         return l1;
 
 -                 }
 
 -                 struct ListNode* s = (struct ListNode*)malloc(sizeof(struct ListNode));
 
 -                 int num1, num2, he;
 
 -                 if (p1 != NULL) {
 
 -                         num1 = p1->val;
 
 -                         p1 = p1->next;
 
 -                 }
 
 -                 if (p2 != NULL) {
 
 -                         num2 = p2->val;
 
 -                         p2 = p2->next;
 
 -                 }
 
 -                 he = num1 + num2 + tmp;
 
 -                 tmp = he / 10;
 
 -                 he = he % 10;
 
 -                 s->val = he;
 
 -                 s->next = sum->next;
 
 -                 sum->next = s;
 
 -         }
 
 -         if (tmp != 0) {
 
 -                 struct ListNode* s = (struct ListNode*)malloc(sizeof(struct ListNode));
 
 -                 s->val = tmp;
 
 -                 s->next = sum->next;
 
 -                 sum->next = s;
 
 -         }
 
 -         return sum;
 
 - }
 
  
- void DispNode(struct ListNode* l) {
 
 -         struct ListNode* p = l->next;
 
 -         while (p != NULL) {
 
 -                 printf("%d ", p->val);
 
 -                 p = p->next;
 
 -         }
 
 - }
 
  
- int main() {
 
 -         struct ListNode* l1, * l2;
 
 -         InitNode(&l1);
 
 -         InitNode(&l2);
 
 -         int sz1[] = { 1,2,3 };
 
 -         int sz2[] = { 4,5,6 };
 
 -         int len1 = sizeof(sz1) / sizeof(int);
 
 -         int len2 = sizeof(sz2) / sizeof(int);
 
 -         InsNode(l1, sz1, len1);
 
 -         InsNode(l2, sz2, len2);
 
 -         struct ListNode* sum = addTwoNumber(l1, l2);     // 在这里调用这个函数,我这个方法好像是错的
 
 -         DispNode(sum);
 
 -         return 0;
 
 - }
 
  复制代码 
不知道是不是你要的: - #include <stdio.h>
 
 - #include <malloc.h>
 
  
- typedef struct ListNode{
 
 -         int val;
 
 -         struct ListNode *next;
 
 - }ListNode;
 
  
- ListNode *sum(ListNode *a, ListNode *b){
 
 -         if(a && b) {
 
 -                 ListNode *res = (ListNode*)malloc(sizeof(ListNode));
 
 -                 res->val = a->val + b->val;
 
 -                 res->next = NULL;
 
 -                 return res;
 
 -         }
 
 -         return NULL;
 
 - }
 
  
- ListNode *FREE_ALL(ListNode *head){
 
 -         if(head){
 
 -                 while(head){
 
 -                         ListNode *p = head;
 
 -                         head = head->next;
 
 -                         free(p);
 
 -                 }
 
 -                 return head;
 
 -         }
 
 -         return NULL;
 
 - }
 
  
- int main(){
 
 -         ListNode *A, *B, *C;
 
 -         A = (ListNode*)malloc(sizeof(ListNode));
 
 -         B = (ListNode*)malloc(sizeof(ListNode));
 
 -         
 
 -         A->val = 13;
 
 -         A->next = NULL;
 
 -         
 
 -         B->val = 4;
 
 -         A->next = NULL;
 
 -         
 
 -         C = sum(A, B);
 
 -         printf("C->val: %d", C->val);
 
 -         
 
 -         // ----- 释放内存 -----
 
 -         A = FREE_ALL(A);
 
 -         B = FREE_ALL(B);
 
 -         C = FREE_ALL(C);
 
 -         
 
 -         free(A);
 
 -         free(B);
 
 -         free(C);
 
 -         
 
 -         return 0;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |