Open In App

Create linked list from a given array

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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.
 



Last Updated : 13 Jul, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads