【发布时间】:2017-09-04 14:13:05
【问题描述】:
我有以下代码:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node {
int data;
struct Node* next;
} Node;
typedef struct link_list {
Node* HEAD;
} LinkList;
void kill(const char* message) {
printf("ERROR: %s\n", message);
exit(-1);
}
LinkList* createList() {
LinkList* list = malloc(sizeof(LinkList));
list->HEAD = NULL;
return list;
}
Node* createNode() {
Node* node = malloc(sizeof(Node));
node->next = NULL;
node->data = 0;
return node;
}
void insert(LinkList* list, int data) {
if(list == NULL)
kill("Cannot insert. The given list is NULL.");
Node* node = createNode();
node->data = data;
if(list->HEAD == NULL) {
list->HEAD = node;
return;
}
Node* it = list->HEAD;
while(it->next != NULL) {
it = it->next;
}
it->next = node;
}
void display(LinkList* list) {
if(list == NULL)
kill("The given link list has not been initialized.");
Node* it = list->HEAD;
if(list->HEAD == NULL)
kill("The given link list is empty.");
while(1 == 1) {
printf("%d ", it->data);
it = it->next;
if(it == NULL)
break;
}
printf("\n");
}
void main() {
int numbers;
int data;
LinkList* list = createList();
printf("How many numbers?\n");
scanf("%d", &numbers);
for (int i = 0; i < numbers; ++i)
{
printf("Insert data of element %d: ", i + 1);
scanf("%d", &data);
insert(list, data);
}
display(list);
}
我收到以下警告:
据我了解,为指针赋值似乎存在问题。但据我所知,LHS 和 RHS 类型似乎是相同的! (Node*).
这是否与 next 被定义为 struct Node* next 而我分配给它的值是 Node* 这一事实有关?
【问题讨论】:
-
在
struct node的定义中使用struct node* next;,而不是struct Node* next; -
几天前出现了完全相同的问题....相同的错误,相同的命名...
-
您可以从控制台复制和粘贴文本。
-
下次可以发错误信息的时候不要发错误信息的图片。
-
基本上没有
struct Node,从来没有定义过。如果您看到警告“分配不兼容的指针类型”,这几乎总是一个错误。