46.3k views
2 votes
Write a program that creates a linked list object of 10 characters and creates a second list object containing a copy of the first list, but in reverse order.

User Kerone
by
6.4k points

1 Answer

4 votes

Answer:

Below code is in c++ with explanation.

Step-by-step explanation:

Explanation is in comment format, any line starting with //.

#include <iostream>

#include <cstdlib>

using namespace std;

//creating a Node struct which holds node data

struct Node {

char data;

struct Node *next;

};

//creating variable of Node as head

// this head is the start point of ordered Linked list

struct Node* head = NULL;

// This method is used to insert new value in node

void insert(char new_data) {

// allocating the memory for new node

struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));

// assigning the data to new node

new_node->data = new_data;

// If head == null then it means we are inserting first value

// it will return after creating first node and assign it to

// head as head is the entry point

if(head == NULL){

new_node->next=NULL;

head=new_node;

return;

}

// Now we need to treverse to end of linked list

// that's why creating a lastNode variable

// As we don't want our head to point any other node

// except first node

Node* lastNode = head;

while(lastNode->next != NULL){

lastNode=lastNode->next;

}

// as last node next will be null to end the traversing

// on linked list

new_node->next= NULL;

// assigning last node to its previous node

lastNode->next = new_node;

}

// This variable will hold the first node for reverse linklist

struct Node* reverseHead = NULL;

// This method will reverse the ordered linklist

void reversLinkList(){

Node* lastNode = head;

// traversing the ordered linklist

while(lastNode!= NULL){

// creating new linked list

struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));

new_node->data = lastNode->data;

new_node->next = reverseHead;

reverseHead = new_node;

lastNode = lastNode->next;

}

}

// display method will travers the linklist that

// was passed throw paramter

void display(Node* node) {

struct Node* ptr;

ptr = node;

while (ptr != NULL) {

cout<< ptr->data <<" ";

ptr = ptr->next;

}

}

// main method is the entry point of this program

int main() {

// adding 10 nodes by calling insert method

insert('a');

insert('b');

insert('c');

insert('d');

insert('e');

insert('f');

insert('g');

insert('h');

insert('i');

insert('j');

cout<<"The Ordered linked list is: ";

// calling display method with head to print ordered linklist

display(head);

cout<<endl;

cout<<"The Reversed linked list is: ";

// calling reversLinkList to reverse the ordered linklist

reversLinkList();

// calling display method with reverseHead to display

// reversed linklist

display(reverseHead);

return 0;

}

User Elliot Cameron
by
5.8k points