当前位置:   article > 正文

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

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

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

函数接口定义:

  1. /* 用数组arr中的arr_size个元素创建单链表,并返回链表的头指针 */
  2. struct Node* build(int* arr, int arr_size);
  3. /* 返回链表中所有结点的累加和 */
  4. int getSum(struct Node* head);

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

裁判测试程序样例:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct Node
  4. {
  5. int data;
  6. struct Node* next;
  7. };
  8. /* 用数组arr中的arr_size个元素创建单链表,并返回链表的头指针 */
  9. struct Node* build(int* arr, int arr_size);
  10. /* 返回链表中所有结点的累加和 */
  11. int getSum(struct Node* head);
  12. int main(int argc, char const *argv[])
  13. {
  14. struct Node* head = NULL;
  15. int arr_size, i, *arr;
  16. scanf("%d", &arr_size);
  17. arr = (int*)malloc(arr_size * sizeof(int));
  18. for (i = 0; i < arr_size; i++)
  19. scanf("%d", &arr[i]);
  20. head = build(arr, arr_size);
  21. for (struct Node* p = head; p != NULL; p = p->next)
  22. printf("%d ", p->data);
  23. printf("\n");
  24. printf("%d\n", getSum(head));
  25. free(arr);
  26. return 0;
  27. }
  28. /* 请在这里填写答案 */

输入样例:

  1. 3
  2. 1 2 3

输出样例:

  1. 1 2 3
  2. 6
  1. struct Node* build(int* arr, int arr_size){
  2. struct Node*head=NULL,*p1,*p2;
  3. int i=0;
  4. while(i<arr_size)
  5. {
  6. p1=(struct Node*)malloc(sizeof(struct Node));
  7. p1->data=arr[i];
  8. if(head==NULL)
  9. head=p1;
  10. else
  11. p2->next=p1;
  12. p2=p1;
  13. i++;
  14. }
  15. return head;
  16. }
  17. int getSum(struct Node* head){
  18. struct Node *p,*q;
  19. p=head;
  20. int sum=0;
  21. while(p)
  22. {
  23. int t=p->data;
  24. p=p->next;
  25. sum=sum+t;
  26. }
  27. return sum;
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/515550
推荐阅读
相关标签
  

闽ICP备14008679号