Prepend Double linked list

Hi - more linked lists issues :)

I am working on a simple prepend function for a doubly linked list - but I have hit a snag. Many of the examples I have seen use a similar algorithm to what I am using here, but I don't understand how to get around the problem when pointing the old head of the list to the new node. I am getting a memory violation issue on that line...

Code:

`#include <iostream>`

using namespace std;

typedef struct Node

{

int *data;

Node *next;

Node *prev;

} NODE;

// Function prototypes

void output_fwd(void);

void insert_beg(int *data);

// The list

NODE *head;

NODE *tail;

int main(void)

{

int num;

cout << "Enter a number: ";

cin >> num;

while (num != 999)

{

insert_beg(&num);

cout << "Enter a number: ";

cin >> num;

}

output_fwd();

return 0;

}

void output_fwd(void)

{

NODE *current;

current = head;

while (current != NULL)

{

cout << "Number: " << *current->data << endl;

current = current->next;

}

}

void insert_beg(int *data)

{

NODE *temp = new NODE;

temp->data = new int;

*temp->data = *data;

temp->next = head;

temp->prev = NULL;

// This is the problem line..

head->prev = temp;

head = temp;

}