编译器报错newNode没有在范围内声明
#include<stdio.h>#include<stdlib.h>
struct Node
{
int data;
struct Node* next;
};
struct Node* createNode()
{
struct Node* headNode=(struct Node*)malloc(sizeof(struct Node));
headNode->next=NULL;
return headNode;
}
struct Node* createNode(int data)
{
struct Node* newNode=(struct Node*)malloc(sizeof(struct Node));
newNode->data=data;
newNode->next=NULL;
return newNode;
}
void insertList(struct Node* headNode,int data)
{
struct Node* newnode=createNode(data);
newNode->next=headNode->next;
headNode->next=newNode;
}
void printList(struct Node* headNode)
{
struct Node* pMove=headNode->next;
while(pMove!=NULL)
{
printf("%d\n",pMove->data);
pMove=pMove->next;
}
printf("\n");
}
int main()
{
struct Node* list=createNode();
for(int i=0;i<3;i++)
{
insertList(list,i);
}
printList(list);
return 0;
} 问题出在 insertList 函数中,你定义了一个叫做 newnode 的指针来指向新创建的节点,但是在后面却使用了 newNode 来访问该指针。这是因为你在 createNode 函数中定义了一个同名的函数,导致了冲突。你需要将 createNode 函数的名字修改一下,比如改为 createNewNode ,并且在 insertList 函数中也相应地修改为 createNewNode 。另外,为了避免内存泄漏,记得在使用完毕后要释放节点的内存空间。
页:
[1]