输入了一个长度为 n 的数组,他想把这个数组转换成链表,链表上每个节点的值对应数组中一个元素的值,然后遍历链表并求和各节点的值
输入:
5
5 2 3 1 1
输出:
12
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode
{
int data;
struct ListNode* next;
}ListNode;
ListNode * creat_list(int arr[],int n)
{
ListNode *head=(ListNode*)malloc(sizeof(ListNode));
head->data=arr[0];
head->next=NULL;
ListNode *p=head;
for (int i=1;i<n;i++) {
ListNode *s=(ListNode*)malloc(sizeof(ListNode));
s->data=arr[i];
s->next=NULL;
p->next=s;
p=p->next;
}
return head;
}
void show_list(ListNode *head)
{
ListNode *p=head;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
int sum_list(ListNode*head)
{
int sum=0;
while(head!=NULL)
{
sum+=head->data;
head=head->next;
}
return sum;
}
int main() {
int n;
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++)
{
scanf("%d ",&arr[i]);
}
ListNode *head=creat_list(arr,n);
int sum=sum_list(head);
printf("%d",sum);
return 0;
}