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.



Below is the implementation of the above approach:

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

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

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

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.




Article Tags :