6-6 单链表结点和

给出单链表类型定义。本题要求实现2个函数,创建单链表并统计所有结点的累加和。

函数接口定义:

/* 用数组arr中的arr_size个元素创建单链表,并返回链表的头指针 */
struct Node* build(int* arr, int arr_size);

/* 返回链表中所有结点的累加和 */
int getSum(struct Node* head); 

其中 arrarr_size 分别表示指向数组的指针和元素个数。 arr_size 的值不超过10的范围,函数返回创建的单链表的头指针; head 是单链表的头指针,函数须返回 单链表 中所有结点的累加和。

裁判测试程序样例:

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

struct Node
{
    int data;
    struct Node* next;
};

/* 用数组arr中的arr_size个元素创建单链表,并返回链表的头指针 */
struct Node* build(int* arr, int arr_size);

/* 返回链表中所有结点的累加和 */
int getSum(struct Node* head); 

int main(int argc, char const *argv[])
{
    struct Node* head = NULL;
    int arr_size, i, *arr;

    scanf("%d", &arr_size);

    arr = (int*)malloc(arr_size * sizeof(int));

    for (i = 0; i < arr_size; i++)
        scanf("%d", &arr[i]);

    head = build(arr, arr_size);

    for (struct Node* p = head; p != NULL; p = p->next)
        printf("%d ", p->data);
    printf("\n");

    printf("%d\n", getSum(head));

    free(arr);

    return 0;
}

/* 请在这里填写答案 */

输入样例:

3
1 2 3

输出样例:

1 2 3 
6
struct Node* build(int* arr, int arr_size){
    struct Node*head=NULL,*p1,*p2;
    int i=0;
    while(i<arr_size)
    {
        p1=(struct Node*)malloc(sizeof(struct Node));
        p1->data=arr[i];
        if(head==NULL)
            head=p1;
        else
            p2->next=p1;
        p2=p1;
        i++;
    }
    return head;
}
int getSum(struct Node* head){
    struct Node *p,*q;
       p=head; 
    int sum=0;
    while(p)
    {
        int t=p->data;
        p=p->next;
        sum=sum+t;
    }
    return sum;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值