不变main函数情况下如何保证正常运行统计负数


#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;

struct LNode *next;

}LNode, *LinkList;

LinkList Create();/* 细节在此不表 */

int NegativeInt(LinkList L);
int main()
{
LinkList L, p;
ElemType e;
L = Create();
printf("The number of negative integers is %d.\n", NegativeInt(L));
return 0;
}
/* 你的代码将被嵌在这里 */
int NegativeInt(LinkList L){
LNode *p;
int sum=0;
p=L->next;
if(p==NULL){
return 0;
}else{
while (p!= NULL)
{

if(p->data <0){


sum++;
}

p = p->next;
}


}


return sum;


}


in
6 -3 4 -5 3 -1
out
2

代码没什么问题。供参考:

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode
{
    ElemType data;

    struct LNode* next;

}LNode, * LinkList;

LinkList Create();/* 细节在此不表 */
int NegativeInt(LinkList L);

LinkList Create()
{
    ElemType data;
    LinkList head, p, q;
    head = (LinkList)malloc(sizeof(LNode));
    head->next = NULL;
    p = head;
    while (1) {
        scanf("%d", &data);
        if (data == -1) break;
        q = (LinkList)malloc(sizeof(LNode));
        q->next = NULL;
        q->data = data;

        p->next = q;
        p = q;
    }
    return head;
}
int main()
{
    LinkList L, p;
    ElemType e;
    L = Create();
    printf("The number of negative integers is %d.\n", NegativeInt(L));
    return 0;
}
/* 你的代码将被嵌在这里 */
int NegativeInt(LinkList L) {
    LNode* p;
    int sum = 0;
    p = L->next;
    if (p == NULL) {
        return 0;
    }
    while (p != NULL)
    {
        if (p->data < 0) {
            sum++;
        }
        p = p->next;
    }
    return sum;
}