FIL*_*IaS 1 c arrays warnings linked-list data-structures
我正在尝试实现连接到数组的双链表.使数组的结构包含列表的Head和Tail指针.
typedef struct myStruct{
int code;
struct myStruct *Head;
struct myStruct *Tail;
}myStruct;
myStruct MyArray[10];
Run Code Online (Sandbox Code Playgroud)
这是我的双链表:
struct myList
{
int data;
struct myList *previous;
struct myList *next;
}head;
struct myList *start =NULL;
Run Code Online (Sandbox Code Playgroud)
在下面的代码中我得到了我在帖子标题上写的警告
警告:从不兼容的指针类型分配
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;
}
Run Code Online (Sandbox Code Playgroud)
我正在看这么多时间,但仍然无法找到什么错误以及我应该纠正什么.如果您有任何想法,我将不胜感激!无论如何/提前谢谢!;)
Ber*_*ron 11
MyArray[code].Head=newNode; //WARNING
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
我建议你使用更明确的类型名称,这样就不会发生这样的错误.
您可以重命名struct myStruct为struct myList并重命名struct myList为struct myNode.因为它们是,或者似乎是.