you forget to allocate object
void addnode(int value){
if (head==NULL)
{
head = new node; //here was a mistake
head->x=value;
head->next=NULL;
also delete global temp variable and use local
else
{
node *temp = head;
while(temp->next!=NULL)
temp=temp->next;
}
void print(){
node *temp = head;
while (temp!=NULL) // here mistake too
{
cout<<temp->x<<" ";
temp=temp->next;
}
}