c语言中的带头节点单向链表是什么,下列给定程序中,函数fun的功能是:计算一个带头结点的单向链表中各结点的数据

本关任务:程序中函数fun的功能是计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。请不要增行或删行,或者更改程序的结构。

#include 
#include 
#define N 8

typedef struct list
{ 
    int data;
    struct list *next;
} SLIST;

SLIST *creatlist(int *);
void outlist(SLIST *);

int fun( SLIST *h)
{ 
    SLIST *p; int s=0;
    p=h->next;
    while(p)
    {
        
    /***** 在以下一行填写代码 *****/
        s+= p->     (1)       ;
        
    /***** 在以下一行填写代码 *****/
        p=p->       (2)       ;
        
    }
    
    return s;
}

int main()
{
    SLIST *head;
    int a[N]={12,87,45,32,91,16,20,48};
    
    head=creatlist(a); 
    outlist(head);
    
    /***** 在以下一行填写代码 *****/
    printf("\nsum=%d\n", fun(   (3)   ));
    
    return 0;
}

SLIST *creatlist(int a[])
{ 
    SLIST *h,*p,*q; 
    int i;
    h=p=(SLIST *)malloc(sizeof(SLIST));
    
    for(i=0; imalloc(sizeof(SLIST));
        q->data=a[i]; 
        p->next=q; 
        p=q;
    }
    p->next=0;
    
    return h;
}

void outlist(SLIST *h)
{ 
    SLIST *p;
    p=h->next;
    
    if (p==NULL)
        printf("The list is NULL!\n");
    else { 
        printf("\nHead ");
        do{ 
            printf("->%d", p->data);
            p=p->next; 
        } while(p!=NULL);
        printf("->End\n");
    }
}