Answer:
Below code is in c++ with explanation.
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;
}