我尝试用整数向量创建一个简单的链表。为什么这不起作用?我得到的错误是:
'=' : incompatible types - from 'talstrul *' to 'node *'
'=' : cannot convert from 'talstrul*' to talstrul'
这是.h文件:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int num;
struct node *next;
} talstrul;
这是.c文件:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "clabb2head.h"
int main()
{ int vek[5] = {1,2,3,4,5};
int langd = sizeof(vek)/sizeof(vek[0]);
printf("%d",langd);
talstrul *temp = malloc(sizeof(talstrul));
talstrul *pek1 = NULL;
int i;
for(i=0; i<langd; i++)
{
pek1 -> num = vek[i];
pek1 -> next = *temp;
*temp = pek1;
}
}
答案 0 :(得分:4)
temp
的类型为talstrul *
talstrul *temp = malloc(sizeof(talstrul));
您正尝试分配给node *
struct node *next;
另外
pek1 -> next = *temp;
取消引用temp
,产生talstrul
。你不应该取消引用指针。
编译器可以很好地解释出现了什么问题。
答案 1 :(得分:0)
代码的另一个问题:
将pek1指定为NULL。然而,您尝试下一步分配pek1-&gt; num和pek1-&gt;。你应该首先为pek1做内存分配。
答案 2 :(得分:0)
typedef struct node {
int num;
struct node *next;
} talstrul;
...
int vek[5] = {1,2,3,4,5};
int langd = sizeof(vek)/sizeof(vek[0]);
talstrul *pek1 = NULL;
int i;
for(i=0; i<langd; i++){
talstrul *temp = malloc(sizeof(talstrul));
temp -> num = vek[i];
temp -> next = pek1;
pek1 = temp;
}