I got run-time error for the following code. I am just starting to get familiar with linked list. Can any one point out what's the problem here? thanks

#include "stdafx.h"
#include<iostream>
using namespace std;

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

node* buildonetwothree()  
{
node* head=NULL;          
node* second=NULL;        
node* third=NULL;         


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

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

third->data=3;
third->next=NULL;
return head;           
}


int length(node* head) 
{

node* moving=head;
int count=0;
while(moving!=NULL)    
{moving=moving->next;
count++;}
return count;
}

void main()
{
node* head=NULL;
head=buildonetwothree();
cout<<length(head);

}

You haven't allocated any memory for your pointers

node* buildonetwothree()
{
node* head=NULL;
node* second=NULL;
node* third=NULL;

head->data=1;

head->next=second;
second->data=2;
second->next=third;
third->data=3;
third->next=NULL;

return head;
}

Edited 6 Years Ago by gerard4143: n/a

thanks, I changed

node* head=NULL;         
node* second=NULL;       
node* third=NULL;

to

node* head=new node;  
node* second=new node;
node* third=new node;

now it works, but where should I deallocate the dynamic allocated memory? at the end of the main program?

thanks, I changed

node* head=NULL;         
node* second=NULL;       
node* third=NULL;

to

node* head=new node;  
node* second=new node;
node* third=new node;

now it works, but where should I deallocate the dynamic allocated memory? at the end of the main program?

You really should implement your nodes as classes and let the destructor's worry about freeing up allocated memory..

Edited 6 Years Ago by gerard4143: n/a

This article has been dead for over six months. Start a new discussion instead.