Given an array arr[] of size N. The task is to create linked list from the given array.
Examples:
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
Simple Approach: For each element of an array arr[] we create a node in a linked list and insert it at the end.
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> |
Output:
1 2 3 4 5
Time Complexity : O(n*n)
Efficient Approach: We traverse array from end and insert every element at the beginning of the list.
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> |
Output:
1 2 3 4 5
Time Complexity : O(n)
Alternate Efficient Solution is maintain tail pointer, traverse array elements from left to right, insert at tail and update tail after insertion.