I'm having trouble changing this single linked list into a doubly linked list so that I can print a string of characters (the char s[] variable) backwards. I don't want to reverse the linked list, just print it in reverse, while using a doubly linked list. So how do I implement a doubly linked list with the following code?
#include <string.h>
#include <iostream>
using namespace std;
class node
{
public:
char data;
node *next;
node *prev;
};
int _tmain(int argc, _TCHAR* argv[])
{
char s[] = "abcdefghijklmnopqrstuvwxyz";
node *head; //start of list
node *temp;
node *current;
head = new node; // create the head of the linked list
head->data = s[0];
head->next = NULL;
temp = head; // get ready for the loop - save the head in temp - you are going to change temp in the loop
for(size_t i=1; i < strlen(s); i++) // create the rest of the linked list
{
current = new node; // make a new node
current->data = s[i]; // set it's data member
current->next = NULL;
temp->next = current; // point to the new node
temp = current; // make temp point to current node (for next time through)
}
node *ptr = head; // set a ptr to head, then increment the pointer
while (ptr != NULL)
{
cout << ptr->data; // print out the linked list
ptr = ptr->next; // increment the linked list
}
cout << endl;
system("pause");
return 0;
}
prevpointers on newly created nodes so far. That would be a good place to start ... - dragoshttempis initialised on the heap outside the loop then immediately overwritten byhead. That's a memory leak. Also, initialise your prev pointers. - Andy Brown