简单链表代码出错

时间:2014-02-13 03:08:49

标签: c pointers struct

我尝试用整数向量创建一个简单的链表。为什么这不起作用?我得到的错误是:

'=' : 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;
    }
}

3 个答案:

答案 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;
}