2017-04-08 14 views
0

46から53のキャストエラーのない整数からのポインタの代入を取得しています.2つの行は両側にアスタリスクが2つあり、私の人生にとってはわかりませんなぜ。リンクされたリストは私にとって非常に新しいものです。キャストエラーのないリンクされたリストポインタ

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

struct node_def 
{ 
    int data; 
    struct node_def *next; 
}; 
typedef struct node_def node; 

node *makeNode (int a); 
node *insertFront(node *head,node *new); 
void printList(node *head); 

int numNodes = 0; 

int main() 
{ 
    srand(time(0)); 
    int r = rand() % 10000; 
    int i = 0; 

    node *head = NULL; 
    node *tmp = NULL; 

    printf("How many nodes? ", numNodes); 
    scanf("%d", numNodes); 
    printf("\n"); 

    head = insertFront(head, tmp); 

    for(i = 0; i < numNodes; i++) 
    { 
     makeNode(r); 
     printList(head); 
    } 
    printf("\n"); 

    return 0; 
} 
node *makeNode (int a) 
{ 
    node *new = malloc(sizeof(node)); 
    **new = a;** 

    return new; 
} 
node *insertFront(node *head, node *new) 
{ 

    **new->data = head;** 
    new->next = new; 

    return 0; 
} 
void printList(node *head) 
{ 
    int j = 0; 
    for(j = 0; j < numNodes; ++j) 
    { 
     while (head != NULL) 
     { 
      printf(" %4d", head->data); 
      head = head->next; 
     } 
     if(j % 10 == 0) 
      printf("\n"); 
    } 
    return; 
} 

=新しいAは、新しいノードを作成し、0から彼らに乱数を割り当てることを意図している - あなたは新しいにRを割り当てよう9999

+1

ヒント:「a」はどのようなタイプですか?それはポインタですか?同様に、 'head'はどんなタイプですか?それは 'int'ですか? –

+0

これらのコメントのどちらも私を助けてくれません。変数の場所を入れ替えたり、アスタリスクやアンパサンドの組み合わせを変えたり、何も動いていないことなど、私はこれら2行のエラーを止めさせるためにすべてを試しました。私はこれ以上の方向性が必要です。 – Boo92

+0

'new = a;' - > 'if(new){new-> data = a; new-> next = NULL; } ' – BLUEPIXY

答えて

0

が、新しいは構造体です。 構造体へのポインタを作成します。node * new あなたがしたいのは、rをnew-> dataに代入することです。これはintです。

node *insertFront(node *head, node *new) 
{ 
**new->data = head;** // ** is meaningless 
new->next = new; // new is a reserved key word, don't use it this way 
return 0; 
} 

あなたがしようとするのは、あなたのリストの先頭にNULLポインタを置くことです。 makeNode関数内で要素をプッシュするだけです。 次のように挿入します。

void createNode(node *head) 
{ 
    Node *new_node = malloc(sizeof(Node*)); 
    new_node->data = rand() % 100000; 
    new_node->next = NULL; 
    if(head == NULL) 
     head = new_node; 
    else if(head != NULL) 
     //Here you have to adapt your list, search (linked list crud functions) 
} 

あなたはポインタが何であるかについて悪い理解しています。 欲しいもの:

関連する問題