• 2022-06-09
    下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。
    请改正函数fun中的错误,使它能得出正确的结果。
    注意:部分源程序在文件MODII.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
    试题程序:
    #include<stdlib.h>
    #include<conio.h>
    #include<stdio.h>
    typedefstructaa
    {
    intdata;
    structaa*next;
    }NODE;
    intfun(NODE*h)
    {
    intsum=0;
    NODE*p;
    p=h->next;
    /*********found*********/
    while(p->next)
    {
    if(p->data%2==0)
    sum+=p->data;
    /*********found*********/
    p=h->next;
    }
    returnsum;
    }
    NODE*creatlink(intn)
    {
    NODE*h,*p,*s;
    inti;
    h=p=(NODE*)malloc(sizeof(NODE));
    for(i=1;i<n;i++)
    {
    s=(NODE*)malloc(sizeof(NODE));
    s->data=rand()%16;
    s->next=p->next;
    p->next=s;
    p=p->next;
    }
    p->next=NULL;
    returnh;
    }
    outlink(NODE*h)
    {
    NODE*p;
    p=h->next;
    printf("\n\nTheLIST:\n\nHEAD");
    while(p)
    {
    printf("->%d",p->data);
    p=p->next;
    }
    printf("\n");
    }
    main()
    {
    NODE*head;
    intsum;
    system("CLS");
    head=creatlink(10);
    outlink(head);
    sum=fun(head);
    printf("\nSUM=%d\n",sum);
    }
  • 举一反三