赞
踩
给出单链表类型定义。本题要求实现2个函数,创建单链表并统计所有结点的累加和。
- /* 用数组arr中的arr_size个元素创建单链表,并返回链表的头指针 */
- struct Node* build(int* arr, int arr_size);
-
- /* 返回链表中所有结点的累加和 */
- int getSum(struct Node* head);
其中 arr
和 arr_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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。