I have to accept user input, a string, into a doubly linked list and print the output reversed and forward. My professor gave us the following program and told us to modify it. However, I cannot figure it out.

``````/* Program to reverse a doubly linked list */
#include <stdio.h>
#include <stdlib.h>

/* a node of the doubly linked list */
struct node
{
int data;
struct node *next;
struct node *prev;
};

/* Function to reverse a Doubly Linked List */
{
struct node *temp = NULL;

/* swap next and prev for all nodes of
while (current !=  NULL)
{
temp = current->prev;
current->prev = current->next;
current->next = temp;
current = current->prev;
}

/* Before changing head, check for the cases like empty
list and list with only one node */
if(temp != NULL )
}

/* Function to insert a node at the beginging of the Doubly Linked List */
void push(struct node** head_ref, int new_data)
{
/* allocate node */
struct node* new_node =
(struct node*) malloc(sizeof(struct node));

/* put in the data  */
new_node->data  = new_data;

/* since we are adding at the begining,
prev is always NULL */
new_node->prev = NULL;

/* link the old list off the new node */

/* change prev of head node to new node */

/* move the head to point to the new node */
}

/* Function to print nodes in a given doubly linked list
This function is same as printList() of singly linked lsit */
void printList(struct node *node)
{
while(node!=NULL)
{
printf("%d ", node->data);
node = node->next;
}
}

/* Drier program to test above functions*/
int main()
{

/* Let us create a sorted linked list to test the functions
Created linked list will be 10->8->4->2 */

/* Reverse doubly linked list */

getchar();
}
``````

I tried changing the main function to this:

``````int main()
{

char str[400];

/* Reverse doubly linked list */

getchar();
}
``````

but did not work. I would appreciate any help, hints, clues. Thanks!

First, change the structure by replacing the int data member with a character array to hold the input string.

After you do that replace function parameters that take an integer which is intended to be inserted a node with a character array, for example the second parametr to push() function.

Lines 8 and 10 of the new main() you posted are both incorrect.

Line 8: the second parameter to scanf() should have been str instead of head.

Line 10: There are two parameters to push(). The second one should have been str from line 8. Before you can compile that you have to change push() as I mentioned previously.

Also in your new main() you have to put lines 8 and 10 in a loop so that you can input three strings.

There will most likely be other changes I have not mentioned that you need to make.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.