Dada una array arr[] de tamaño N . La tarea es crear una lista vinculada a partir de la array dada.
Ejemplos:
Input : arr[]={1, 2, 3, 4, 5} Output : 1->2->3->4->5 Input :arr[]={10, 11, 12, 13, 14} Output : 10->11->12->13->14
Enfoque simple: para cada elemento de una array arr[] , creamos un Node en una lista vinculada y lo insertamos al final.
C++
#include <iostream> using namespace std; // Representation of a node struct Node { int data; Node* next; }; // Function to insert node void insert(Node** root, int item) { Node* temp = new Node; Node* ptr; temp->data = item; temp->next = NULL; if (*root == NULL) *root = temp; else { ptr = *root; while (ptr->next != NULL) ptr = ptr->next; ptr->next = temp; } } void display(Node* root) { while (root != NULL) { cout << root->data << " "; root = root->next; } } Node *arrayToList(int arr[], int n) { Node *root = NULL; for (int i = 0; i < n; i++) insert(&root, arr[i]); return root; } // Driver code int main() { int arr[] = { 1, 2, 3, 4, 5 }; int n = sizeof(arr) / sizeof(arr[0]); Node* root = arrayToList(arr, n); display(root); return 0; }
Java
// Java implementation of the approach import java.util.*; class GFG { // Representation of a node static class Node { int data; Node next; }; // Function to insert node static Node insert(Node root, int item) { Node temp = new Node(); Node ptr; temp.data = item; temp.next = null; if (root == null) root = temp; else { ptr = root; while (ptr.next != null) ptr = ptr.next; ptr.next = temp; } return root; } static void display(Node root) { while (root != null) { System.out.print( root.data + " "); root = root.next; } } static Node arrayToList(int arr[], int n) { Node root = null; for (int i = 0; i < n; i++) root = insert(root, arr[i]); return root; } // Driver code public static void main(String args[]) { int arr[] = { 1, 2, 3, 4, 5 }; int n = arr.length; Node root = arrayToList(arr, n); display(root); } } // This code is contributed by Arnab Kundu
Python3
# Python3 implementation of the approach import math # Representation of a node class Node: def __init__(self, data): self.data = data self.next = None # Function to insert node def insert(root, item): temp = Node(item) if (root == None): root = temp else : ptr = root while (ptr.next != None): ptr = ptr.next ptr.next = temp return root def display(root): while (root != None) : print(root.data, end = " ") root = root.next def arrayToList(arr, n): root = None for i in range(0, n, 1): root = insert(root, arr[i]) return root # Driver code if __name__=='__main__': arr = [1, 2, 3, 4, 5] n = len(arr) root = arrayToList(arr, n) display(root) # This code is contributed by Srathore
C#
// C# implementation of the above approach using System; class GFG { // Representation of a node public class Node { public int data; public Node next; }; // Function to insert node static Node insert(Node root, int item) { Node temp = new Node(); Node ptr; temp.data = item; temp.next = null; if (root == null) root = temp; else { ptr = root; while (ptr.next != null) ptr = ptr.next; ptr.next = temp; } return root; } static void display(Node root) { while (root != null) { Console.Write(root.data + " "); root = root.next; } } static Node arrayToList(int []arr, int n) { Node root = null; for (int i = 0; i < n; i++) root = insert(root, arr[i]); return root; } // Driver code public static void Main(String []args) { int []arr = { 1, 2, 3, 4, 5 }; int n = arr.Length; Node root = arrayToList(arr, n); display(root); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // Javascript implementation of the approach // Representation of a node class Node { constructor() { var data; var next; } } // Function to insert node function insert( root, item) { var temp = new Node(); var ptr; temp.data = item; temp.next = null; if (root == null) root = temp; else { ptr = root; while (ptr.next != null) ptr = ptr.next; ptr.next = temp; } return root; } function display( root) { while (root != null) { document.write( root.data + " "); root = root.next; } } function arrayToList( arr, n) { var root = null; for (let i = 0; i < n; i++) root = insert(root, arr[i]); return root; } // Driver Code let arr = [ 1, 2, 3, 4, 5 ]; let n = arr.length; var root = arrayToList(arr, n); display(root); // This code is contributed by jana_sayantan. </script>
1 2 3 4 5
Complejidad de tiempo: O (n * n)
Enfoque eficiente: Atravesamos la array desde el final e insertamos cada elemento al comienzo de la lista.
C++
#include <iostream> using namespace std; // Representation of a node struct Node { int data; Node* next; }; // Function to insert node void insert(Node** root, int item) { Node* temp = new Node; temp->data = item; temp->next = *root; *root = temp; } void display(Node* root) { while (root != NULL) { cout << root->data << " "; root = root->next; } } Node *arrayToList(int arr[], int n) { Node *root = NULL; for (int i = n-1; i >= 0 ; i--) insert(&root, arr[i]); return root; } // Driver code int main() { int arr[] = { 1, 2, 3, 4, 5 }; int n = sizeof(arr) / sizeof(arr[0]); Node* root = arrayToList(arr, n); display(root); return 0; }
Java
// Java program to print level order traversal // in spiral form using one queue and one stack. import java.util.*; class GFG { // Representation of a node static class Node { int data; Node next; }; static Node root; // Function to insert node static Node insert(Node root, int item) { Node temp = new Node(); temp.data = item; temp.next = root; root = temp; return root; } static void display(Node root) { while (root != null) { System.out.print(root.data + " "); root = root.next; } } static Node arrayToList(int arr[], int n) { root = null; for (int i = n - 1; i >= 0 ; i--) root = insert(root, arr[i]); return root; } // Driver code public static void main(String[] args) { int arr[] = { 1, 2, 3, 4, 5 }; int n = arr.length; Node root = arrayToList(arr, n); display(root); } } // This code is contributed by Princi Singh
Python3
# Python3 program to print level order traversal # in spiral form using one queue and one stack. # Representation of a Node class Node: def __init__(self, data): self.data = data self.next = next # Function to insert Node def insert(root, item): temp = Node(0) temp.data = item temp.next = root root = temp return root def display(root): while (root != None): print(root.data, end=" ") root = root.next def arrayToList(arr, n): root = None for i in range(n - 1, -1, -1): root = insert(root, arr[i]) return root # Driver code if __name__ == '__main__': arr = [1, 2, 3, 4, 5]; n = len(arr) root = arrayToList(arr, n); display(root) # This code is contributed by 29AjayKumar
C#
// C# program to print level order traversal // in spiral form using one queue and one stack. using System; class GFG { // Representation of a node public class Node { public int data; public Node next; }; static Node root; // Function to insert node static Node insert(Node root, int item) { Node temp = new Node(); temp.data = item; temp.next = root; root = temp; return root; } static void display(Node root) { while (root != null) { Console.Write(root.data + " "); root = root.next; } } static Node arrayToList(int []arr, int n) { root = null; for (int i = n - 1; i >= 0 ; i--) root = insert(root, arr[i]); return root; } // Driver code public static void Main(String[] args) { int []arr = { 1, 2, 3, 4, 5 }; int n = arr.Length; Node root = arrayToList(arr, n); display(root); } } // This code is contributed by Rajput-Ji
Javascript
<script> // JavaScript program to print level order traversal // in spiral form using one queue and one stack. // Representation of a node class Node { constructor() { this.data = 0; this.next = null; } } var root; // Function to insert node function insert(root, item) { var temp = new Node(); temp.data = item; temp.next = root; root = temp; return root; } function display(root) { while (root != null) { document.write(root.data + " "); root = root.next; } } function arrayToList(arr, n) { root = null; for (var i = n - 1; i >= 0; i--) root = insert(root, arr[i]); return root; } // Driver code var arr = [1, 2, 3, 4, 5]; var n = arr.length; var root = arrayToList(arr, n); display(root); </script>
1 2 3 4 5
Complejidad de tiempo: la solución eficiente alternativa O (n)
es mantener el puntero de la cola, atravesar los elementos de la array de izquierda a derecha, insertar en la cola y actualizar la cola después de la inserción.
Publicación traducida automáticamente
Artículo escrito por Premdeep Toppo y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA