The inverted output of the linked list, which we may think of, is to flip the linked list and traverse it again. In this case, the time complexity is O (n), but the disadvantage is that the Code is slightly complicated. Or open up an array, traverse a linked list sequentially, copy the elements to the array, and output the array in reverse order. In fact, the time complexity of this question cannot be lower than O (N). However, considering stack usage, the Code may be very simple. The Code is as follows:
#include <iostream>using namespace std;struct Node{int key;Node* next;};Node* createList(int arr[],int nLength);void printList(Node* head);void reversePrint(Node* head);void clearList(Node* head);void main(){int arr[] = {1,3,5,7,9};int nLength = sizeof(arr)/sizeof(arr[0]);Node* head = createList(arr,nLength);printList(head);reversePrint(head);clearList(head);}Node* createList(int arr[],int nLength){Node* head = new Node;head->key = arr[0];head->next = NULL;Node *p = head;for(int i=1;i<nLength;i++){Node* ptr = new Node;ptr->key = arr[i];ptr->next = NULL;p->next = ptr;p = p->next;}return head;}void printList(Node* head){Node* p = head;while( p!= NULL ){cout<<p->key<<endl;p=p->next;}}void clearList(Node* head){Node* p = head;Node* ptr;while( p!= NULL ){ptr = p->next;delete p;p = ptr;}}void reversePrint(Node* head){if( head != NULL ){if( head->next != NULL )reversePrint(head->next);}cout<
Inverted output of linked list