我正在尝试实现连接到数组的双链表。 构成数组的结构包含列表的 Head 和 Tail 指针。
typedef struct myStruct{
int code;
struct myStruct *Head;
struct myStruct *Tail;
}myStruct;
myStruct MyArray[10];
这是我的双向链表:
struct myList
{
int data;
struct myList *previous;
struct myList *next;
}head;
struct myList *start =NULL;
在下面的代码中,我收到了我写在帖子标题上的警告
警告:来自不兼容指针类型的赋值
void add_neighbor_to_neighborList(struct neighborList *start,int code,int Data)
{
struct myList *newNode = (struct myList *) malloc (sizeof(struct myList )); /* creates a new node of the correct data size */
newNode->data = Data;
if (start == NULL) { /*WARNING!checks to see if the pointer points somewhere in space*/
MyArray[code].Head=newNode; //WARNING
newNode->previous=MyArray[code].Head;
}
else
{
MyArray[code].Tail->next=newNode; /*error: ‘struct myStruct’ has no member named ‘next’*/
newNode->previous=MyArray[code].Tail; //WARNING
}
/*if (newNode == NULL){
return NULL;
}*/
MyArray[code].Tail=newNode; //WARNING
newNode->next=MyArray[code].Tail; //WARNING
//return *start;
}
我看了很多时间,但仍然找不到问题所在以及我应该更正的地方。 如果您有任何想法,我将不胜感激!无论如何/提前谢谢! ;)
最佳答案
MyArray[code].Head=newNode; //WARNING
MyArray[code].Head
的类型是 struct myStruct *
。
newNode
的类型是 struct myList *
。
struct myStruct *
和 struct myList *
是指向两种不同类型的指针,它们是不兼容的,这就是你的编译器告诉你的。
您可能希望您的 struct myStruct
定义如下:
typedef struct myStruct{
int code;
struct myList *Head;
struct myList *Tail;
} myStruct;
我建议您使用更明确的类型名称,这样就不会发生这样的错误。
您可以将 struct myStruct
重命名为 struct myList
并将 struct myList
重命名为 struct myNode
。因为他们就是这样,或者看起来就是这样。
关于c - 为什么我得到 "warning: assignment from incompatible pointer type"?结构数组中的双链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038621/