Boo92
Boo92

Reputation: 69

Linked List Pointer Without A Cast Error

I'm getting assignment makes pointer from integer without a cast errors on lines 46 and 53, the two lines with double asterisks on either side, and for the life of me, I cannot figure out why. Linked lists are very new to me, I don't know how they work completely yet.

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

new = a is meant to make new nodes and assign them a random number from 0 - 9999.

Upvotes: 0

Views: 77

Answers (1)

WaLinke
WaLinke

Reputation: 778

You try to assign r to new, but new is a struct. You make a pointer to struct : node *new What you want to do is assigning r to new->data, which is an 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;
}

What you try to do is to put a NULL pointer as the head of your list. Just push element into it within your makeNode function. insert like this :

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

You have a bad understanding about what pointers are. Hope it helps bro

Upvotes: 1

Related Questions