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 creating 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++
// 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;
} |
Java
// 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 |
Python3
# Python3 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 |
C#
// 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 |
Javascript
<script> // JavaScript implementation of the approach // Singly Linked List structure class node { constructor() {
this .data = 0;
this .next = null ;
}
}
// Function to add a new node // to the Linked List function add( data)
{ var newnode = new node();
newnode.data = data;
newnode.next = null ;
return newnode;
} // Function to print the array contents function printArr( a, n)
{ for (let i = 0; i < n; i++)
document.write(a[i]+ " " );
} // Function to return the length // of the Linked List function findlength( head)
{ var curr = head;
let cnt = 0;
while (curr != null )
{
cnt++;
curr = curr.next;
}
return cnt;
} // Function to convert the // Linked List to an array function convertArr( head)
{ // Find the length of the
// given linked list
let len = findlength(head);
// Create an array of the
// required length
let arr = new Array(len);
let index = 0;
var 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 var 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); </script> |
Output:
1 2 3 4 5
Time Complexity: O(N)
Auxiliary Space: O(N)