我正在学习C语言中的结构和指针。我尝试使用节点表来创建散列函数。我还在收到警告。我在寻找答案,但我找不到。
主:
int *T[N];
inittab(T);
chhinsert(T,206);
结构:
typedef struct{
int key;
struct node *next;
}node;
功能:
void chhinsert(int **T,int k){
node *x=NULL;
x=(node*)malloc(sizeof(node));
x->next=NULL;
x->key=k;
int p=h(k);
//two lines below generates warning: assignment from incompatible pointer type
x->next=T[p];
T[p]=x;
}
我也试过
typedef struct node{...}node;
然后
void chhinsert(int **T,int k){
struct node *x=NULL;
x=(node*)malloc(sizeof(node));
x->next=NULL;
x->key=k;
int p=h(k);
x->next=T[p];
T[p]=x;
}
每次我将x分配给表中的值,反之亦然警告显示
答案 0 :(得分:0)
在行void chhinsert(int **T,int k)
中,您将T
声明为指向int
的指针,而不是指向node
的指针。将您的声明更改为void chhinsert(struct node **T,int k)
。