题解 | #牛牛的双链表求和#

牛牛的双链表求和

https://www.nowcoder.com/practice/efb8a1fe3d1f439691e326326f8f8c95


#include <stdio.h>
#include <stdlib.h>
typedef struct linklist
{
    int data;
    struct linklist *next;
}linklist;
//创建链表节点
linklist *create_node(int x)
{
    linklist *pnew = (linklist*)malloc(sizeof(linklist));
    pnew->data = x;
    pnew->next = NULL;
    return pnew;
}
linklist *insert_linklistlist(linklist *head,int data)
{
    linklist *p = head ;
    linklist *newnode = create_node(data);
    if( head -> next == NULL)
    {
        head -> next = newnode;
    }
    else 
    {
        while ( p -> next != NULL) 
        {
            p = p -> next;
        }
        p -> next = newnode;
    }
    return  head;
}
void print_linklist(linklist *head)
{
    linklist *p = head->next;
    while (p != NULL) 
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}
linklist *add_linklist_all(linklist *head,linklist *Bhead)
{
    linklist *p = head->next;
    linklist *pre  = Bhead->next;
    while(p!= NULL)
    {
        pre->data += p->data;
        p = p->next;
        pre = pre->next;
    }
    return Bhead;
}
int main() 
{
    int n = 0 ;
    scanf("%d",&n);
    int arry[n] ;
    //创建带头节点的链表头节点
    linklist *head = (linklist*)malloc(sizeof(linklist));
    head->next = NULL;
    head -> data = 10000;
    linklist *Bhead = (linklist*)malloc(sizeof(linklist));
    Bhead->next = NULL;
    Bhead -> data = 10000;
    //输入数组,插入节点
    for(int i = 0 ; i < n ; i++)
    {
        scanf("%d",&arry[i]);
        head = insert_linklistlist(head,arry[i]);
    }
    for(int i = 0 ; i < n ; i++)
    {
        scanf("%d",&arry[i]);
        Bhead = insert_linklistlist(Bhead,arry[i]);
    }
    add_linklist_all(head, Bhead);
    print_linklist(Bhead);  
}

全部评论

相关推荐

已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务