• 0

[C++] Linked lists: "invalid conversion from void* to node"


Question

Okay, so I've been kind of putting off learning linked lists for a couple of days because I hate learning things that I don't completely understand... but I finally decided to just jump in and go with it.

I am following a tutorial from Stanford's Computer Science department and have basically copied the tutorial code (except changed 'head' to 'root', just to be different :))

#include <iostream>

using namespace std;

struct node {

	   int data;
	   struct node* next;

};

struct node* buildNodes() {

	   struct node* root = NULL;
	   struct node* second = NULL;
	   struct node* third = NULL;

	   //allocate three nodes in the heap
	   root = malloc(sizeof(struct node));
	   second = malloc(sizeof(struct node));
	   third = malloc(sizeof(struct node)); 

	   root->data = 1;
	   root->next = second;

	   root->data = 2;
	   root->next = third;

	   root->data = 3;
	   root->next = NULL;

	   return root;

}

int main() {

}

Okay, I'm starting to understand this a little more... except I have no idea why my compiler (Bloodshed's Dev-C++) gives me the error "invalid conversion from 'void*' to 'node*'." (it points to the lines using the malloc() function).

hmm.... I could have sworn

struct node* root = NULL;

would make 'root' the type 'node'. I really have very little clue about what I'm saying... heh

any ideas?

5 answers to this question

Recommended Posts

  • 0
  nvme said:
i dont think you need to prefix it with 'struct'. i think it only needs to be:

node* root = NULL;

i could be wrong though.

ah, that works as well. I think the tutorial I found is for both C and C++, and it was also written in 2002 so it may be outdated a bit... Thanks for the help.

  • 0

With C, the 'struct' keyword is required unless you do a typedef. If you use a typedef, you still need to use struct inside the actual struct:

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

Node* root = NULL;

And in C++, NULL is the same as 0, but with less typing required. :)

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.