2014-02-13 49 views
1

我嘗試使用整數向量創建簡單鏈接列表。爲什麼這不起作用?我得到的錯誤是:簡單鏈接列表代碼中的錯誤

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

1)在哪裏定義了'struct node'? 2)你爲什麼期望能夠將類型爲'talstrul'的'* temp'賦給'struct node *'類型的'pek1-> next'?還有更多,但我們從那裏開始。 – jerry

+0

您需要將typedef struct {'更改爲'typedef struct node {'。還有其他的錯誤,正如人們指出的那樣。 –

回答

4

temp的類型是talstrul *

talstrul *temp = malloc(sizeof(talstrul)); 

你是t rying要分配給下一個,它的類型node *

struct node *next; 

此外

pek1 -> next = *temp; 

解引用temp,得到talstrul的。你不應該取消引用指針。

編譯器給你一個很好的解釋什麼是錯的。

0

代碼的另一個問題:

pek1被分配給NULL。然而你試着分配pek1-> num和pek1-> next。你應該先爲pek1做內存分配。

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