Convert a Singly Linked List to an array

Given a singly linked list and the task is to convert it into an array.

Examples:

Input: List = 1 -> 2 -> 3 -> 4 -> 5 -> NULL
Output: 1 2 3 4 5

Input: List = 10 -> 20 -> 30 -> 40 -> 50 -> NULL
Output: 10 20 30 40 50

Approach: An approach to create a linked list from the given array has been discussed in this article. Here, an approach to convert the given linked list to an array will be discussed.



  • Find the length of the given linked list say len.
  • Create an array of size len.
  • Traverse the given linked list and store the elements in the array one at a time.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <iostream>
using namespace std;
  
// Singly Linked List structure
struct node {
    int data;
    node* next;
};
  
// Function to add a new node
// to the Linked List
node* add(int data)
{
    node* newnode = new node;
    newnode->data = data;
    newnode->next = NULL;
    return newnode;
}
  
// Function to print the array contents
void printArr(int a[], int n)
{
    for (int i = 0; i < n; i++)
        cout << a[i] << " ";
}
  
// Function to return the length
// of the Linked List
int findlength(node* head)
{
    node* curr = head;
    int cnt = 0;
    while (curr != NULL) {
        cnt++;
        curr = curr->next;
    }
    return cnt;
}
  
// Function to convert the
// Linked List to an array
void convertArr(node* head)
{
  
    // Find the length of the
    // given linked list
    int len = findlength(head);
  
    // Create an array of the
    // required length
    int arr[len];
  
    int index = 0;
    node* curr = head;
  
    // Traverse the Linked List and add the
    // elements to the array one by one
    while (curr != NULL) {
        arr[index++] = curr->data;
        curr = curr->next;
    }
  
    // Print the created array
    printArr(arr, len);
}
  
// Driver code
int main()
{
    node* head = NULL;
    head = add(1);
    head->next = add(2);
    head->next->next = add(3);
    head->next->next->next = add(4);
    head->next->next->next->next = add(5);
  
    convertArr(head);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
class GFG
{
  
// Singly Linked List structure
static class node
{
    int data;
    node next;
}
  
// Function to add a new node
// to the Linked List
static node add(int data)
{
    node newnode = new node();
    newnode.data = data;
    newnode.next = null;
    return newnode;
}
  
// Function to print the array contents
static void printArr(int a[], int n)
{
    for (int i = 0; i < n; i++)
        System.out.print(a[i]+" ");
}
  
// Function to return the length
// of the Linked List
static int findlength(node head)
{
    node curr = head;
    int cnt = 0;
    while (curr != null)
    {
        cnt++;
        curr = curr.next;
    }
    return cnt;
}
  
// Function to convert the
// Linked List to an array
static void convertArr(node head)
{
  
    // Find the length of the
    // given linked list
    int len = findlength(head);
  
    // Create an array of the
    // required length
    int []arr = new int[len];
  
    int index = 0;
    node curr = head;
  
    // Traverse the Linked List and add the
    // elements to the array one by one
    while (curr != null
    {
        arr[index++] = curr.data;
        curr = curr.next;
    }
  
    // Print the created array
    printArr(arr, len);
}
  
// Driver code 
public static void main(String []args)
{
    node head = new node();
    head = add(1);
    head.next = add(2);
    head.next.next = add(3);
    head.next.next.next = add(4);
    head.next.next.next.next = add(5);
  
    convertArr(head);
}
}
  
// This code is contributed by Rajput-Ji

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Pytho3 implementation of the approach
  
# Structure of a Node 
class node: 
    def __init__(self, data): 
        self.data = data 
        self.next = None
  
# Function to add a new node
# to the Linked List
def add(data):
  
    newnode = node(0)
    newnode.data = data
    newnode.next = None
    return newnode
  
# Function to print the array contents
def printArr(a, n):
  
    i = 0
    while(i < n):
        print (a[i], end = " ")
        i = i + 1
  
# Function to return the length
# of the Linked List
def findlength( head):
  
    curr = head
    cnt = 0
    while (curr != None):
      
        cnt = cnt + 1
        curr = curr.next
      
    return cnt
  
# Function to convert the
# Linked List to an array
def convertArr(head):
  
    # Find the length of the
    # given linked list
    len1 = findlength(head)
  
    # Create an array of the
    # required length
    arr = []
  
    index = 0
    curr = head
  
    # Traverse the Linked List and add the
    # elements to the array one by one
    while (curr != None): 
        arr.append( curr.data)
        curr = curr.next
      
    # Print the created array
    printArr(arr, len1)
  
# Driver code 
head = node(0)
head = add(1)
head.next = add(2)
head.next.next = add(3)
head.next.next.next = add(4)
head.next.next.next.next = add(5)
convertArr(head)
  
# This code is contributed by Arnab kundu

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach
using System;
                      
class GFG
{
  
// Singly Linked List structure
public class node
{
    public int data;
    public node next;
}
  
// Function to add a new node
// to the Linked List
static node add(int data)
{
    node newnode = new node();
    newnode.data = data;
    newnode.next = null;
    return newnode;
}
  
// Function to print the array contents
static void printArr(int []a, int n)
{
    for (int i = 0; i < n; i++)
        Console.Write(a[i] + " ");
}
  
// Function to return the length
// of the Linked List
static int findlength(node head)
{
    node curr = head;
    int cnt = 0;
    while (curr != null)
    {
        cnt++;
        curr = curr.next;
    }
    return cnt;
}
  
// Function to convert the
// Linked List to an array
static void convertArr(node head)
{
  
    // Find the length of the
    // given linked list
    int len = findlength(head);
  
    // Create an array of the
    // required length
    int []arr = new int[len];
  
    int index = 0;
    node curr = head;
  
    // Traverse the Linked List and add the
    // elements to the array one by one
    while (curr != null
    {
        arr[index++] = curr.data;
        curr = curr.next;
    }
  
    // Print the created array
    printArr(arr, len);
}
  
// Driver code 
public static void Main(String []args)
{
    node head = new node();
    head = add(1);
    head.next = add(2);
    head.next.next = add(3);
    head.next.next.next = add(4);
    head.next.next.next.next = add(5);
  
    convertArr(head);
}
}
  
// This code is contributed by 29AjayKumar

chevron_right


Output:

1 2 3 4 5

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.