Dada una cola . La tarea es invertir la cola utilizando otra cola vacía.
Ejemplos:
Input: queue[] = {1, 2, 3, 4, 5} Output: 5 4 3 2 1 Input: queue[] = {10, 20, 30, 40} Output: 40 30 20 10
Acercarse:
- Dada una cola y una cola vacía.
- El último elemento de la cola debe ser el primer elemento de la nueva cola.
- Para obtener el último elemento, es necesario abrir la cola uno por uno y agregarlo al final de la cola, tamaño: 1 vez.
- Entonces, después de eso, obtendremos el último elemento al frente de la cola. Ahora saque ese elemento y agréguelo a la nueva cola. Repita los pasos s – 1 veces donde s es el tamaño original de la cola.
A continuación se muestra la implementación del enfoque:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to return the reversed queue queue<int> reverse(queue<int> q) { // Size of queue int s = q.size(); // Second queue queue<int> ans; for (int i = 0; i < s; i++) { // Get the last element to the // front of queue for (int j = 0; j < q.size() - 1; j++) { int x = q.front(); q.pop(); q.push(x); } // Get the last element and // add it to the new queue ans.push(q.front()); q.pop(); } return ans; } // Driver Code int main() { queue<int> q; // Insert elements q.push(1); q.push(2); q.push(3); q.push(4); q.push(5); q = reverse(q); // Print the queue while (!q.empty()) { cout << q.front() << " "; q.pop(); } return 0; }
Java
// Java implementation of the above approach import java.util.*; class GFG { // Function to return the reversed queue static Queue<Integer> reverse(Queue<Integer> q) { // Size of queue int s = q.size(); // Second queue Queue<Integer> ans = new LinkedList<>(); for (int i = 0; i < s; i++) { // Get the last element to the // front of queue for (int j = 0; j < q.size() - 1; j++) { int x = q.peek(); q.remove(); q.add(x); } // Get the last element and // add it to the new queue ans.add(q.peek()); q.remove(); } return ans; } // Driver Code public static void main(String[] args) { Queue<Integer> q = new LinkedList<>(); // Insert elements q.add(1); q.add(2); q.add(3); q.add(4); q.add(5); q = reverse(q); // Print the queue while (!q.isEmpty()) { System.out.print(q.peek() + " "); q.remove(); } } } // This code is contributed by Princi Singh
Python3
# Python3 implementation of the above approach from collections import deque # Function to return the reversed queue def reverse(q): # Size of queue s = len(q) # Second queue ans = deque() for i in range(s): # Get the last element to the # front of queue for j in range(s - 1): x = q.popleft() q.appendleft(x) # Get the last element and # add it to the new queue ans.appendleft(q.popleft()) return ans # Driver Code q = deque() # Insert elements q.append(1) q.append(2) q.append(3) q.append(4) q.append(5) q = reverse(q) # Print the queue while (len(q) > 0): print(q.popleft(), end = " ") # This code is contributed by Mohit Kumar
C#
// C# Program to print the given pattern using System; using System.Collections.Generic; class GFG { // Function to return the reversed queue static Queue<int> reverse(Queue<int> q) { // Size of queue int s = q.Count; // Second queue Queue<int> ans = new Queue<int>(); for (int i = 0; i < s; i++) { // Get the last element to the // front of queue for (int j = 0; j < q.Count - 1; j++) { int x = q.Peek(); q.Dequeue(); q.Enqueue(x); } // Get the last element and // add it to the new queue ans.Enqueue(q.Peek()); q.Dequeue(); } return ans; } // Driver Code public static void Main(String[] args) { Queue<int> q = new Queue<int>(); // Insert elements q.Enqueue(1); q.Enqueue(2); q.Enqueue(3); q.Enqueue(4); q.Enqueue(5); q = reverse(q); // Print the queue while (q.Count!=0) { Console.Write(q.Peek() + " "); q.Dequeue(); } } } // This code is contributed by Princi Singh
Javascript
<script> // Javascript implementation of the above approach // Function to return the reversed queue function reverse(q) { // Size of queue let s = q.length; // Second queue let ans = []; for(let i = 0; i < s; i++) { // Get the last element to the // front of queue for(let j = 0; j < q.length - 1; j++) { let x = q.shift(); q.push(x); } // Get the last element and // add it to the new queue ans.push(q[0]); q.shift(); } return ans; } // Driver Code let q = []; // Insert elements q.push(1); q.push(2); q.push(3); q.push(4); q.push(5); q = reverse(q); // Print the queue while (q.length != 0) { document.write(q[0] + " "); q.shift(); } // This code is contributed by patel2127 </script>
Producción:
5 4 3 2 1
Complejidad temporal: O(n 2 )
Espacio Auxiliar: O(n)
Publicación traducida automáticamente
Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA