c - 为什么我得到 "warning: assignment from incompatible pointer type"?结构数组中的双链表

标签 c arrays data-structures warnings linked-list

我正在尝试实现连接到数组的双链表。 构成数组的结构包含列表的 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/

相关文章:

使用静态字符数组创建辅助函数

关于在 C 中使用 define 指令(#define)重新定义常量的困惑

c - 如何在不执行 exec 系列函数的情况下更改子进程名称?

javascript - 如何在 JavaScript 中将 Object {} 转换为 Array [] 键值对

C++:设计数据结构来存储多键对象集,以便能够收集和遍历该集的超平面

c++ - C - 将扫描码集 1 转换为 ASCII

arrays - 使用 Struct 的 Encodable 协议(protocol)解码 2D 多边形坐标

arrays - var 和 := in slice declaration go language 的区别

arrays - 如何使用笛卡尔树将数组从索引 i 多次反转到索引 j?

c - 为什么我在运行我的快速排序算法代码时收到 fastsort.exe 已停止工作并出现错误 255 <0xff>?我正在使用代码块