logo

Vend en sammenkædet liste

Givet en pointer til hovedknudepunktet på en linket liste, er opgaven at vende den linkede liste. Vi er nødt til at vende listen ved at ændre forbindelserne mellem noder.

Eksempler :



Input : Leder af følgende linkede liste
1->2->3->4->NULL
Produktion : Linket liste skal ændres til,
4->3->2->1->NULL

Input : Leder af følgende linkede liste
1->2->3->4->5->NULL
Produktion : Linket liste skal ændres til,
5->4->3->2->1->NULL

Input : NUL
Produktion : NUL



Input : 1->NULL
Produktion : 1->NULL

Anbefalet praksis Vend en linket liste Prøv det!

Vend en sammenkædet liste ved iterativ metode:

Ideen er at bruge tre pointers curr , forrige, og Næste at holde styr på noder for at opdatere omvendte links.

Følg nedenstående trin for at løse problemet:



  • Initialiser tre pointere forrige som NULL, curr som hoved , og Næste som NULL.
  • Gentag gennem den linkede liste. Gør følgende i en løkke:
    • Før du ændrer Næste af curr , gemme Næste node
      • næste = curr -> næste
    • Opdater nu Næste peg på curr til forrige
      • curr -> næste = forrige
    • Opdatering forrige som curr og curr som Næste
      • forrige = curr
      • curr = næste

Nedenfor er implementeringen af ​​ovenstående tilgang:

C++
// Iterative C++ program to reverse a linked list #include  using namespace std; /* Link list node */ struct Node {  int data;  struct Node* next;  Node(int data)  {  this->data = data;  næste = NULL;  } }; struct LinkedList { Node* hoved;  LinkedList() { head = NULL; } /* Funktion til at vende den sammenkædede liste */ void reverse() { // Initialiser aktuelle, forrige og næste pointere Node* nuværende = hoved;  Node *prev = NULL, *next = NULL;  while (current != NULL) { // Store next next = current->next;  // Vend den nuværende nodes pointer strøm->næste = prev;  // Flyt markører én position frem.  forrige = nuværende;  nuværende = næste;  } hoved = forrige;  } /* Funktion til at udskrive linket liste */ void print() { struct Node* temp = head;  mens (temp != NULL) { cout<< temp->data<< ' ';  temp = temp->Næste;  } } void push(int data) { Node* temp = new Node(data);  temp->næste = hoved;  hoved = temp;  } }; /* Driverkode*/ int main() { /* Start med den tomme liste */ LinkedList ll;  ll.push(20);  ll.push(4);  ll.push(15);  ll.skub(85);  cout<< 'Given linked list
';  ll.print();  ll.reverse();  cout << '
Reversed linked list 
';  ll.print();  return 0; }>
C
// Iterative C program to reverse a linked list #include  #include  /* Link list node */ struct Node {  int data;  struct Node* next; }; /* Function to reverse the linked list */ static void reverse(struct Node** head_ref) {  struct Node* prev = NULL;  struct Node* current = *head_ref;  struct Node* next = NULL;  while (current != NULL) {  // Store next  next = current->Næste;  // Vend den nuværende nodes pointer strøm->næste = prev;  // Flyt markører én position frem.  forrige = nuværende;  nuværende = næste;  } *head_ref = forrige; } /* Funktion til at skubbe en node */ void push(struct Node** head_ref, int new_data) { struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));  new_node->data = new_data;  new_node->next = (*head_ref);  (*hoved_ref) = ny_node; } /* Funktion til at udskrive linket liste */ void printList(struct Node* head) { struct Node* temp = head;  while (temp != NULL) { printf('%d ', temp->data);  temp = temp->næste;  } } /* Driverkode*/ int main() { /* Start med den tomme liste */ struct Node* head = NULL;  push(&hoved, 20);  push(&hoved, 4);  push(&hoved, 15);  push(&hoved, 85);  printf('Given linket liste
');  printList(hoved);  reverse(&head);  printf('
Omvendt linket liste 
');  printList(hoved);  getchar(); }>
Java
// Java program for reversing the linked list class LinkedList {  static Node head;  static class Node {  int data;  Node next;  Node(int d)  {  data = d;  next = null;  }  }  /* Function to reverse the linked list */  Node reverse(Node node)  {  Node prev = null;  Node current = node;  Node next = null;  while (current != null) {  next = current.next;  current.next = prev;  prev = current;  current = next;  }  node = prev;  return node;  }  // prints content of double linked list  void printList(Node node)  {  while (node != null) {  System.out.print(node.data + ' ');  node = node.next;  }  }  // Driver Code  public static void main(String[] args)  {  LinkedList list = new LinkedList();  list.head = new Node(85);  list.head.next = new Node(15);  list.head.next.next = new Node(4);  list.head.next.next.next = new Node(20);  System.out.println('Given linked list');  list.printList(head);  head = list.reverse(head);  System.out.println('');  System.out.println('Reversed linked list ');  list.printList(head);  } } // This code has been contributed by Mayank Jaiswal>
Python
# Python program to reverse a linked list # Time Complexity : O(n) # Space Complexity : O(1) # Node class class Node: # Constructor to initialize the node object def __init__(self, data): self.data = data self.next = None class LinkedList: # Function to initialize head def __init__(self): self.head = None # Function to reverse the linked list def reverse(self): prev = None current = self.head while(current is not None): next = current.next current.next = prev prev = current current = next self.head = prev # Function to insert a new node at the beginning def push(self, new_data): new_node = Node(new_data) new_node.next = self.head self.head = new_node # Utility function to print the LinkedList def printList(self): temp = self.head while(temp): print(temp.data, end=' ') temp = temp.next # Driver code llist = LinkedList() llist.push(20) llist.push(4) llist.push(15) llist.push(85) print ('Given linked list') llist.printList() llist.reverse() print ('
Reversed linked list') llist.printList() # This code is contributed by Nikhil Kumar Singh(nickzuck_007)>
C#
// C# program for reversing the linked list using System; class GFG {  // Driver Code  static void Main(string[] args)  {  LinkedList list = new LinkedList();  list.AddNode(new LinkedList.Node(85));  list.AddNode(new LinkedList.Node(15));  list.AddNode(new LinkedList.Node(4));  list.AddNode(new LinkedList.Node(20));  // List before reversal  Console.WriteLine('Given linked list ');  list.PrintList();  // Reverse the list  list.ReverseList();  // List after reversal  Console.WriteLine('Reversed linked list ');  list.PrintList();  } } class LinkedList {  Node head;  public class Node {  public int data;  public Node next;  public Node(int d)  {  data = d;  next = null;  }  }  // function to add a new node at  // the end of the list  public void AddNode(Node node)  {  if (head == null)  head = node;  else {  Node temp = head;  while (temp.next != null) {  temp = temp.next;  }  temp.next = node;  }  }  // function to reverse the list  public void ReverseList()  {  Node prev = null, current = head, next = null;  while (current != null) {  next = current.next;  current.next = prev;  prev = current;  current = next;  }  head = prev;  }  // function to print the list data  public void PrintList()  {  Node current = head;  while (current != null) {  Console.Write(current.data + ' ');  current = current.next;  }  Console.WriteLine();  } } // This code is contributed by Mayank Sharma>
Javascript
>

Produktion
Given linked list 85 15 4 20 Reversed linked list 20 4 15 85>

Tidskompleksitet: O(N), krydser den linkede liste over størrelse N.
Hjælpeplads: O(1)

Vend en sammenkædet liste ved hjælp af rekursion:

Ideen er at nå den sidste knude på den linkede liste ved hjælp af rekursion og derefter begynde at vende den linkede liste.

Følg nedenstående trin for at løse problemet:

  • Opdel listen i to dele – første node og resten af ​​den sammenkædede liste.
  • Ring omvendt for resten af ​​den linkede liste.
  • Link resten linkede liste til først.
  • Fix hovedmarkøren til NULL

Nedenfor er implementeringen af ​​ovenstående tilgang:

C++
// Recursive C++ program to reverse // a linked list #include  using namespace std; /* Link list node */ struct Node {  int data;  struct Node* next;  Node(int data)  {  this->data = data;  næste = NULL;  } }; struct LinkedList { Node* hoved;  LinkedList() { head = NULL; } Node* reverse(Node* head) /* Funktion til at udskrive linket liste */ void print() { struct Node* temp = head;  mens (temp != NULL) { cout<< temp->data<< ' ';  temp = temp->Næste;  } } void push(int data) { Node* temp = new Node(data);  temp->næste = hoved;  hoved = temp;  } }; /* Driverprogram til at teste ovenstående funktion*/ int main() { /* Start med den tomme liste */ LinkedList ll;  ll.push(20);  ll.push(4);  ll.push(15);  ll.skub(85);  cout<< 'Given linked list
';  ll.print();  ll.head = ll.reverse(ll.head);  cout << '
Reversed linked list 
';  ll.print();  return 0; }>
Java
// Recursive Java program to reverse // a linked list import java.io.*; class recursion {  static Node head; // head of list  static class Node {  int data;  Node next;  Node(int d)  {  data = d;  next = null;  }  }  static Node reverse(Node head)    /* Function to print linked list */  static void print()  {  Node temp = head;  while (temp != null) {  System.out.print(temp.data + ' ');  temp = temp.next;  }  System.out.println();  }  static void push(int data)  {  Node temp = new Node(data);  temp.next = head;  head = temp;  }  /* Driver program to test above function*/  public static void main(String args[])  {  /* Start with the empty list */  push(20);  push(4);  push(15);  push(85);  System.out.println('Given linked list');  print();  head = reverse(head);  System.out.println('Reversed linked list');  print();  } } // This code is contributed by Prakhar Agarwal>
Python
'''Python3 program to reverse linked list using recursive method''' # Linked List Node class Node: def __init__(self, data): self.data = data self.next = None # Create and Handle list operations class LinkedList: def __init__(self): self.head = None # Head of list # Method to reverse the list def reverse(self, head): # If head is empty or has reached the list end if head is None or head.next is None: return head # Reverse the rest list rest = self.reverse(head.next) # Put first element at the end head.next.next = head head.next = None # Fix the header pointer return rest # Returns the linked list in display format def __str__(self): linkedListStr = '' temp = self.head while temp: linkedListStr = (linkedListStr + str(temp.data) + ' ') temp = temp.next return linkedListStr # Pushes new data to the head of the list def push(self, data): temp = Node(data) temp.next = self.head self.head = temp # Driver code linkedList = LinkedList() linkedList.push(20) linkedList.push(4) linkedList.push(15) linkedList.push(85) print('Given linked list') print(linkedList) linkedList.head = linkedList.reverse(linkedList.head) print('Reversed linked list') print(linkedList) # This code is contributed by Debidutta Rath>
C#
// Recursive C# program to // reverse a linked list using System; class recursion {  // Head of list  static Node head;  public class Node {  public int data;  public Node next;  public Node(int d)  {  data = d;  next = null;  }  }  static Node reverse(Node head)    if (head == null   // Function to print linked list  static void print()  {  Node temp = head;  while (temp != null) {  Console.Write(temp.data + ' ');  temp = temp.next;  }  Console.WriteLine();  }  static void push(int data)  {  Node temp = new Node(data);  temp.next = head;  head = temp;  }  // Driver code  public static void Main(String[] args)  {  // Start with the  // empty list  push(20);  push(4);  push(15);  push(85);  Console.WriteLine('Given linked list');  print();  head = reverse(head);  Console.WriteLine('Reversed linked list');  print();  } } // This code is contributed by gauravrajput1>
Javascript
>

Produktion
Given linked list 85 15 4 20 Reversed linked list 20 4 15 85>

Tidskompleksitet: O(N), Besøg over hver node én gang
Hjælpeplads: O(N), funktionskald stackplads

Vend en sammenkædet liste med Tail Recursive Method:

Tanken er at fastholde tre pointer Tidligere , nuværende og Næste , besøg rekursivt hver node og lav links ved hjælp af disse tre pointers.

Følg nedenstående trin for at løse problemet:

  • Første opdatering næste med næste node af nuværende dvs. næste = nuværende->næste
  • Lav nu et omvendt link fra nuværende node til forrige node, dvs. curr->next = prev
  • Hvis den besøgte node er den sidste node, skal du blot lave et omvendt link fra den aktuelle node til forrige node og opdateringshoved.

Nedenfor er implementeringen af ​​ovenstående tilgang:

java sammenlignelig
C++
// A simple and tail recursive C++ program to reverse // a linked list #include  using namespace std; struct Node {  int data;  struct Node* next;  Node(int x) {  data = x;  next = NULL;  } }; void reverseUtil(Node* curr, Node* prev, Node** head); // This function mainly calls reverseUtil() // with prev as NULL void reverse(Node** head) {  if (!head)  return;  reverseUtil(*head, NULL, head); } // A simple and tail-recursive function to reverse // a linked list. prev is passed as NULL initially. void reverseUtil(Node* curr, Node* prev, Node** head) {  /* If last node mark it head*/  if (!curr->næste) { *hoved = curr;  /* Update next to prev node */ curr->next = prev;  Vend tilbage;  } /* Gem curr->next node for rekursive call */ Node* next = curr->next;  /* og opdater næste ..*/ curr->next = prev;  reverseUtil(næste, curr, hoved); } // En hjælpefunktion til at udskrive en linket liste void printlist(Node* head) { while (head != NULL) { cout<< head->data<< ' ';  head = head->Næste;  } cout<< endl; } // Driver code int main() {  Node* head1 = new Node(1);  head1->næste = ny Node(2);  head1->next->next = new Node(3);  head1->next->next->next = new Node(4);  head1->next->next->next->next = new Node(5);  head1->next->next->next->next->next = new Node(6);  head1->next->next->next->next->next->next = new Node(7);  head1->next->next->next->next->next->next->next = new Node(8);  cout<< 'Given linked list
';  printlist(head1);  reverse(&head1);  cout << 'Reversed linked list
';  printlist(head1);  return 0; }>
C
// A simple and tail recursive C program to reverse a linked // list #include  #include  typedef struct Node {  int data;  struct Node* next; } Node; void reverseUtil(Node* curr, Node* prev, Node** head); // This function mainly calls reverseUtil() // with prev as NULL void reverse(Node** head) {  if (!head)  return;  reverseUtil(*head, NULL, head); } // A simple and tail-recursive function to reverse // a linked list. prev is passed as NULL initially. void reverseUtil(Node* curr, Node* prev, Node** head) {  /* If last node mark it head*/  if (!curr->næste) { *hoved = curr;  /* Update next to prev node */ curr->next = prev;  Vend tilbage;  } /* Gem curr->next node for rekursive call */ Node* next = curr->next;  /* og opdater næste ..*/ curr->next = prev;  reverseUtil(næste, curr, hoved); } // En hjælpefunktion til at oprette en ny node Node* newNode(int key) { Node* temp = (Node*)malloc(sizeof(Node));  temp->data = nøgle;  temp->næste = NULL;  retur temp; } // En hjælpefunktion til at udskrive en linket liste void printlist(Node* head) { while (head != NULL) { printf('%d ', head->data);  hoved = hoved->næste;  } printf('
'); } // Driverkode int main() { Node* head1 = newNode(1);  head1->next = newNode(2);  head1->next->next = newNode(3);  head1->next->next->next = newNode(4);  head1->next->next->next->next = newNode(5);  head1->next->next->next->next->next = newNode(6);  head1->next->next->next->next->next->next = newNode(7);  head1->next->next->next->next->next->next->next = newNode(8);  printf('Given linket liste
');  printliste(hoved1);  reverse(&head1);  printf('Omvendt linket liste
');  printliste(hoved1);  retur 0; } // Denne kode er bidraget af Aditya Kumar (adityakumar129)>
Java
// Java program for reversing the Linked list class LinkedList {  static Node head;  static class Node {  int data;  Node next;  Node(int d)  {  data = d;  next = null;  }  }  // A simple and tail recursive function to reverse  // a linked list. prev is passed as NULL initially.  Node reverseUtil(Node curr, Node prev)  {  /*If head is initially null OR list is empty*/  if (head == null)  return head;  /* If last node mark it head*/  if (curr.next == null) {  head = curr;  /* Update next to prev node */  curr.next = prev;  return head;  }  /* Save curr->næste node for rekursivt opkald */ Node next1 = curr.next;  /* og opdater næste ..*/ curr.next = prev;  reverseUtil(next1, curr);  hovedet tilbage;  } // udskriver indhold af dobbelt linket liste void printList(Node node) { while (node ​​!= null) { System.out.print(node.data + ' ');  node = node.next;  } } // Driverkode public static void main(String[] args) { LinkedList list = new LinkedList();  list.head = ny Node(1);  list.head.next = ny node(2);  list.head.next.next = ny node(3);  list.head.next.next.next = ny node(4);  list.head.next.next.next.next = ny node(5);  list.head.next.next.next.next.next = ny node(6);  list.head.next.next.next.next.next.next = ny node(7);  list.head.next.next.next.next.next.next.next = ny node(8);  System.out.println('Given linket liste ');  liste.printList(hoved);  Node res = list.reverseUtil(head, null);  System.out.println('
Omvendt linket liste ');  list.printList(res);  } } // Denne kode er bidraget af Aditya Kumar (adityakumar129)>
Python
# Simple and tail recursive Python program to # reverse a linked list # Node class class Node: # Constructor to initialize the node object def __init__(self, data): self.data = data self.next = None class LinkedList: # Function to initialize head def __init__(self): self.head = None def reverseUtil(self, curr, prev): # If last node mark it head if curr.next is None: self.head = curr # Update next to prev node curr.next = prev return # Save curr.next node for recursive call next = curr.next # And update next curr.next = prev self.reverseUtil(next, curr) # This function mainly calls reverseUtil() # with previous as None def reverse(self): if self.head is None: return self.reverseUtil(self.head, None) # Function to insert a new node at the beginning def push(self, new_data): new_node = Node(new_data) new_node.next = self.head self.head = new_node # Utility function to print the linked LinkedList def printList(self): temp = self.head while(temp): print (temp.data, end=' ') temp = temp.next # Driver code llist = LinkedList() llist.push(8) llist.push(7) llist.push(6) llist.push(5) llist.push(4) llist.push(3) llist.push(2) llist.push(1) print ('Given linked list') llist.printList() llist.reverse() print ('
Reversed linked list') llist.printList() # This code is contributed by Nikhil Kumar Singh(nickzuck_007)>
C#
// C# program for reversing the Linked list using System; public class LinkedList {  Node head;  public class Node {  public int data;  public Node next;  public Node(int d)  {  data = d;  next = null;  }  }  // A simple and tail-recursive function to reverse  // a linked list. prev is passed as NULL initially.  Node reverseUtil(Node curr, Node prev)  {  /* If last node mark it head*/  if (curr.next == null) {  head = curr;  /* Update next to prev node */  curr.next = prev;  return head;  }  /* Save curr->næste node for rekursivt opkald */ Node next1 = curr.next;  /* og opdater næste ..*/ curr.next = prev;  reverseUtil(next1, curr);  hovedet tilbage;  } // udskriver indholdet af dobbelt linket liste void printList(Node node) { while (node ​​!= null) { Console.Write(node.data + ' ');  node = node.next;  } } // Driverkode offentlig statisk void Main(String[] args) { LinkedList list = new LinkedList();  list.head = ny Node(1);  list.head.next = ny node(2);  list.head.next.next = ny node(3);  list.head.next.next.next = ny node(4);  list.head.next.next.next.next = ny node(5);  list.head.next.next.next.next.next = ny node(6);  list.head.next.next.next.next.next.next = ny node(7);  list.head.next.next.next.next.next.next.next = ny node(8);  Console.WriteLine('Given linket liste ');  liste.printList(liste.hoved);  Node res = list.reverseUtil(list.head, null);  Console.WriteLine('
Omvendt linket liste ');  list.printList(res);  } } // Denne kode bidraget af Rajput-Ji>
Javascript
>

Produktion
Given linked list 1 2 3 4 5 6 7 8 Reversed linked list 8 7 6 5 4 3 2 1>

Tidskompleksitet: O(N), besøger hver knude på den linkede liste med størrelse N.
Hjælpeplads: O(N), funktionskald stackplads

Vend en sammenkædet liste ved hjælp af Ideen er at gemme alle noderne i stakken og derefter lave en omvendt linket liste.

Følg nedenstående trin for at løse problemet:

  • Gem noderne (værdier og adresse) i stakken, indtil alle værdierne er indtastet.
  • Når alle indtastninger er udført, skal du opdatere hovedmarkøren til den sidste placering (dvs. den sidste værdi).
  • Begynd at poppe noderne (værdi og adresse) og gem dem i samme rækkefølge, indtil stakken er tom.
  • Opdater den næste pointer for sidste node i stakken med NULL.

Nedenfor er implementeringen af ​​ovenstående tilgang:

C++
// C++ program for above approach #include  #include  using namespace std; // Create a class Node to enter values and address in the // list class Node { public:  int data;  Node* next;  Node(int x) {  data = x;  next = NULL;  } }; // Function to reverse the linked list void reverseLL(Node** head) {  // Create a stack 's' of Node type  stacks;  Node* temp = *hoved;  while (temp->next != NULL) { // Skub alle noderne ind for at stable s.push(temp);  temp = temp->næste;  } *hoved = temp;  while (!s.empty()) { // Gem topværdien af ​​stack i list temp->next = s.top();  // Pop værdien fra stak s.pop();  // opdater den næste pointer i listen temp = temp->next;  } temp->next = NULL; } // Funktion til at vise elementerne i List void printlist(Node* temp) { while (temp != NULL) { cout<< temp->data<< ' ';  temp = temp->Næste;  } } // Program til at indsætte bagsiden af ​​den linkede liste void insert_back(Node** hoved, int værdi) {// vi har brugt insertion at back metode til at indtaste værdier // i listen.(f.eks: head->1->2->3->4->Nul) Node* temp = ny Node(værdi);  temp->næste = NULL;  // If *head er lig med NULL if (*head == NULL) { *head = temp;  Vend tilbage;  } andet { Node* last_node = *hoved;  while (sidste_node->næste != NULL) last_node = sidste_node->næste;  last_node->next = temp;  Vend tilbage;  } } // Driverkode int main() { Node* head = NULL;  insert_back(&hoved, 1);  insert_back(&hoved, 2);  insert_back(&hoved, 3);  insert_back(&hoved, 4);  cout<< 'Given linked list
';  printlist(head);  reverseLL(&head);  cout << '
Reversed linked list
';  printlist(head);  return 0; } // This code is contributed by Aditya Kumar (adityakumar129)>
Java
// Java program for above approach import java.util.*; class GFG {  // Create a class Node to enter values and address in  // the list  static class Node {  int data;  Node next;  Node(int x) {  data = x;  next = null;  }  };  static Node head = null;  // Function to reverse the linked list  static void reverseLL()  {  // Create a stack 's' of Node type  Stacks = ny stak();  Node temp = hoved;  while (temp.next != null) { // Skub alle noderne ind for at stable s.add(temp);  temp = temp.næste;  } hoved = temp;  while (!s.isEmpty()) { // Gem den øverste værdi af stakken i listen temp.next = s.peek();  // Pop værdien fra stak s.pop();  // opdater den næste pointer i listen temp = temp.next;  } temp.next = null;  } // Funktion til at vise elementerne i List static void printlist(Node temp) { while (temp != null) { System.out.print(temp.data + ' ');  temp = temp.næste;  } } // Program til at indsætte bagsiden af ​​den linkede liste static void insert_back(int value) { // vi har brugt insertion at back-metoden til at indtaste // værdier i listen.(fx: head.1.2.3.4.Null) Node temp = ny Node(værdi);  temp.next = null;  // If *head er lig med null if (head == null) { head = temp;  Vend tilbage;  } else { Node sidste_node = hoved;  while (last_node.next != null) last_node = last_node.next;  last_node.next = temp;  Vend tilbage;  } } // Driverkode public static void main(String[] args) { insert_back(1);  indsæt_tilbage(2);  indsæt_tilbage(3);  indsæt_tilbage(4);  System.out.print('Given linket liste
');  printliste(hoved);  reverseLL();  System.out.print('
Omvendt linket liste
');  printliste(hoved);  } } // Denne kode er bidraget af Aditya Kumar (adityakumar129)>
Python
# Python code for the above approach # Definition for singly-linked list. class ListNode: def __init__(self, val = 0, next=None): self.val = val self.next = next class Solution: # Program to reverse the linked list # using stack def reverseLLUsingStack(self, head): # Initialise the variables stack, temp = [], head while temp: stack.append(temp) temp = temp.next head = temp = stack.pop() # Until stack is not # empty while len(stack)>0: temp.next = stack.pop() temp = temp.next temp.next = Ingen returnerer hoved # Driverkode hvis __name__ == '__main__': head = ListNode(1, ListNode(2, ListNode(3, ListNode(4)))) print('Given linket liste') temp = head while temp: print(temp.val, end=' ') temp = temp.next obj = Solution() print(' 
Reversed linked list') head = obj.reverseLLUsingStack(head) mens head: print(head.val, end=' ') head = head.next>
C#
// C# program for above approach using System; using System.Collections.Generic; class GFG {  // Create a class Node to enter  // values and address in the list  public class Node {  public int data;  public Node next;  public Node(int x) {  data = x;  }  };  static Node head = null;  // Function to reverse the  // linked list  static void reverseLL()  {  // Create a stack 's'  // of Node type  Stacks = ny stak();  Node temp = hoved;  while (temp.next != null) { // Skub alle noderne // ind for at stable s.Push(temp);  temp = temp.næste;  } hoved = temp;  while (s.Count != 0) { // Gem topværdien af ​​// stack i listen temp.next = s.Peek();  // Pop værdien fra stakken s.Pop();  // Opdater den næste pointer i // i listen temp = temp.next;  } temp.next = null;  } // Funktion til at vise // elementerne i List static void printlist(Node temp) { while (temp != null) { Console.Write(temp.data + ' ');  temp = temp.næste;  } } // Funktion til at indsætte bagsiden af ​​// linket liste static void insert_back(int val) { // Vi har brugt insertion at back metode // til at indtaste værdier i listen.(f.eks.: // head.1.2.3.4 .Null) Node temp = new Node(val);  temp.next = null;  // If *head er lig med null if (head == null) { head = temp;  Vend tilbage;  } else { Node sidste_node = hoved;  while (last_node.next != null) { last_node = last_node.next;  } last_node.next = temp;  Vend tilbage;  } } // Driver Code public static void Main(String[] args) { insert_back(1);  indsæt_tilbage(2);  indsæt_tilbage(3);  indsæt_tilbage(4);  Console.Write('Given linket liste
');  printliste(hoved);  reverseLL();  Console.Write('
Omvendt linket liste
');  printliste(hoved);  } } // Denne kode er bidraget af gauravrajput1>
Javascript
>

Produktion
Given linked list 1 2 3 4 Reversed linked list 4 3 2 1>

Tidskompleksitet: O(N), besøger hver knude på den linkede liste med størrelse N.
Hjælpeplads: O(N), Mellemrum bruges til at gemme noderne i stakken.