Apr 7, 2015 at 12:54pm UTC
Why does it breaks?
Unhandled exception at 0x001D8D52 in Project13.exe: 0xC0000005: Access violation writing location 0x00000008.
at line 32
head->prev = newNode;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct Node
{
int data;
struct Node* next;
struct Node* prev;
};
struct Node* head;
struct Node* GetNewNode(int x)
{
Node* newNode = new Node();
newNode->data = x;
newNode->prev = NULL;
newNode->next = NULL;
return newNode;
}
void InsertAtHead(int x)
{
struct Node* newNode = GetNewNode(x);
if (head = NULL)
{
head = newNode;
return ;
}
head->prev = newNode;
newNode->next = head;
head=newNode;
}
void Print()
{
struct Node* temp = head;
cout << "Forward: " ;
while (temp != NULL)
{
cout << temp->data << " " ;
temp = temp->next;
}
cout << endl;
}
void ReversePrint()
{
struct Node* temp = head;
if (temp == NULL) return ;
while (temp->next != NULL)
{
temp = temp->next;
}
cout << "Reverse: " ;
while (temp != NULL)
{
cout << temp->data << " " ;
temp = temp->prev;
}
cout << endl;
}
int main()
{
head = NULL;
InsertAtHead(2); Print(); ReversePrint();
InsertAtHead(4); Print(); ReversePrint();
InsertAtHead(6); Print(); ReversePrint();
system("pause>0" );
return 0;
}
Last edited on Apr 7, 2015 at 12:58pm UTC
Apr 7, 2015 at 1:07pm UTC
at line 32 head->prev = newNode;
Apr 7, 2015 at 1:25pm UTC
I'm almost certain line 27 needs to be == rather than just one =.
On line 27 with just 1 equals sign, you assign head to NULL. Then the if condition evaluates NULL, which will be false. Then line 32 tries to access a member variable of a NULL pointer.
Apr 7, 2015 at 1:47pm UTC
lmao yeah that's my only error. Thank you!