将内存分配给结构时出现malloc错误

时间:2013-09-14 08:25:17

标签: c dev-c++

#include<stdio.h>
#include<conio.h>
struct Node{
    int number;
    struct Node * next;
};

struct Node * insertNodeInLinkedList(int number,struct Node * startOfList){
    if(startOfList == NULL){
        startOfList = (struct Node *)malloc(sizeof(struct Node));
        startOfList->number = number;
        startOfList->next = NULL;
    }else{
        struct Node * temporaryNode = startOfList;
        struct Node * newNode = (struct Node *)malloc(sizeof(struct Node));
        while(temporaryNode->next != NULL){
            temporaryNode = temporaryNode->next;
        }

        newNode->number = number;
        newNode->next = NULL;
        temporaryNode->next = newNode;

    }
    return startOfList;
}

void display(struct Node * startOfList){
    struct Node * temporaryNode = startOfList;
    while(temporaryNode != NULL){
        printf("%d",temporaryNode->number);
        temporaryNode = temporaryNode->next;
    }   
}

int main (void){
    int howManyNodes = 0;
    int counter = 0;
    int enteredNumber = 0;
    struct Node * startOfMyList = NULL;

    printf("How many nodes do you want in your linked list?");
    scanf("%d",&howManyNodes);

    while(counter < howManyNodes){
        printf("Enter number: ");
        scanf("%d",&enteredNumber);
        startOfMyList = insertNodeIntoLinkedList(enteredNumber,startOfMyList);
        counter++;
    }
    display(startOfMyList);
    getch();
    return 0;
}  

这是我插入和显示链表节点的简单程序。但是,行:

startOfList = (struct Node *)malloc(sizeof(struct Node));  

被标记为错误。我不知道为什么。

这里出了什么问题?

1 个答案:

答案 0 :(得分:1)

您的malloc似乎是正确的。

对于您的新错误,只是因为在main中您正在调用insertNodeIntoLinkedList并且您之前定义了该函数:

insertNodeInLinkedList
//        ^^

此外,您需要为malloc功能添加<stdlib.h>