Create linked list from a given array

24 Jun, 2022
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++
Java
Python3
C#
Javascript
#include <iostream>using namespace std;  // Representation of a nodestruct Node {    int data;    Node* next;};  // Function to insert nodevoid 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 codeint 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 implementation of the approachimport java.util.*;class GFG{       // Representation of a nodestatic class Node {    int data;    Node next;};  // Function to insert nodestatic 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 codepublic 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 implementation of the approach import math  # Representation of a nodeclass Node:     def __init__(self, data):         self.data = data         self.next = None  # Function to insert nodedef 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 codeif __name__=='__main__':     arr = [1, 2, 3, 4, 5]    n = len(arr)    root = arrayToList(arr, n)    display(root)      # This code is contributed by Srathore
// C# implementation of the above approach using System;       class GFG{       // Representation of a nodepublic class Node {    public int data;    public Node next;};  // Function to insert nodestatic 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 codepublic 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 
<script>  // Javascript implementation of the approach  // Representation of a nodeclass Node {        constructor() {                var data;                var next;             }        }                    // Function to insert nodefunction 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
 
Time Complexity : O(n*n)Efficient Approach: We traverse array from end and insert every element at the beginning of the list.  
C++
Java
Python3
C#
Javascript
#include <iostream>using namespace std;  // Representation of a nodestruct Node {    int data;    Node* next;};  // Function to insert nodevoid 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 codeint 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 program to print level order traversal// in spiral form using one queue and one stack.import java.util.*;class GFG {   // Representation of a nodestatic class Node {    int data;    Node next;};static Node root;   // Function to insert nodestatic 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 codepublic 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 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# program to print level order traversal// in spiral form using one queue and one stack.using System;      class GFG {   // Representation of a nodepublic class Node {    public int data;    public Node next;};static Node root;   // Function to insert nodestatic 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 codepublic 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
<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
 
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. 
andrew1234
princiraj1992
princi singh
Rajput-Ji
sapnasingh4991
29AjayKumar
jana_sayantan
rdtank
simmytarika5
Arrays
Linked List
Linked List
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Maximum and minimum of an array using minimum number of comparisons
Top 50 Array Coding Problems for Interviews
Multidimensional Arrays in Java
Stack Data Structure (Introduction and Program)
Linear Search
Reverse a linked list
Stack Data Structure (Introduction and Program)
LinkedList in Java
Doubly Linked List | Set 1 (Introduction and Insertion)
Introduction to Data Structures