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

牛牛的单链表求和

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

#include <stdio.h>
#include <stdlib.h>

typedef struct node{
    int data;
    struct node *next;
}node;

node *arrayToLinkedList(int arr[], int n)
{
    if (n == 0) {
        return NULL;
    }

    node *head = malloc(sizeof(node));
    head->data = arr[0]; //第一个节点;
    head->next = NULL;   //指针域为NULL;
    node *current = head;//流指针
    
    for (int i = 1; i < n; i++) {  //尾插法
        node *newNode = malloc(sizeof(node));
        newNode->data = arr[i];//创建新节点
        newNode->next = NULL;
        current->next = newNode;
        current = newNode;//流指针向后移动
    }
    return head;
}

//遍历链表并求和节点值
int sumLinkedList(node *head)
{
    int sum = 0;
    node *current = head; //指针指向头节点
    while (current != NULL) {
        sum = sum + current->data;//遍历节点的数据域相加;
        current = current->next;  //流指针向后移动类似于p++;
    }
    return sum;       //返回所有节点相加之和
}

void freeLinkedList(node *head)
{
    node *temp;
    while (head != NULL) {
        temp = head;
        head = head->next; //头指针向后移动
        free(temp);        //释放当前节点
    }
}

int main() {
  int n;
  scanf("%d", &n);
  int arr[n];
  for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
  }
    node *head = arrayToLinkedList(arr, n);

    int sum = sumLinkedList(head);
    printf("%d\n", sum);

    freeLinkedList(head);

    return 0;
}

全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务