题解 | #牛牛的双链表求和#
牛牛的双链表求和
https://www.nowcoder.com/practice/efb8a1fe3d1f439691e326326f8f8c95
#include <stdio.h> #include <stdlib.h> typedef int data_t; typedef struct node { data_t data; struct node *next; }listnode,*linklist; //创建表头 linklist list_create() { linklist H = (linklist)malloc(sizeof(listnode)); if(H == NULL) { printf("malloc is failed"); return NULL; } H->data = 0; H->next = NULL; return H; } //表未插入 void list_insert(linklist H) { linklist L = (linklist)malloc(sizeof(listnode)); if(L == NULL) { printf("malloc is failed"); return ; } linklist h = H; int value; scanf("%d",&value); L->data = value; L->next = NULL; while(h->next != NULL) h = h->next; h->next = L; } //打印链表 void list_show(linklist H) { linklist h = H->next; while(h->next != NULL) { printf("%d ",h->data); h = h->next; } printf("%d ",h->data); } //链表求和 linklist list_sum(linklist H1,linklist H2) { linklist h1 = H1->next; linklist h2 = H2->next; while(h1->next != NULL) { h1->data = h1->data + h2->data; h1 = h1->next; h2 = h2->next; } h1->data = h1->data + h2->data; return H1; } int main() { int i, n; linklist H1 = list_create(); linklist H2 = list_create(); linklist H3; scanf("%d",&n); for(i = 0;i<n;i++) list_insert(H1); for(i = 0;i<n;i++) list_insert(H2); H3 = list_sum(H1,H2); list_show(H3); return 0; }