Lista enlazada
multinivel La lista enlazada multinivel es una estructura de datos 2D que comprende varias listas enlazadas y cada Node en una lista enlazada multinivel tiene un puntero siguiente y otro secundario. Todos los elementos están vinculados mediante punteros.
Representación:
una lista vinculada de varios niveles se representa mediante un puntero al primer Node de las listas vinculadas . Similar a la lista enlazada , el primer Node se llama cabeza. Si la lista vinculada multinivel está vacía, el valor de head es NULL. Cada Node de una lista consta de al menos tres partes:
1. Datos.
2. Puntero al siguiente Node.
3. Puntero al Node secundario.
Cada Node de una lista enlazada multinivel se representa como:
Node de clase
{
público:
datos int;
Node *siguiente;
Node *hijo;
};
A continuación se muestra la implementación de la lista enlazada multinivel
C++
// C++ program to implement // a multilevel linked list #include <bits/stdc++.h> using namespace std; // Representation of node class Node { public: int data; Node* next; Node* child; }; // A function to create a linked list // with n(size) nodes returns head pointer Node* createList(int* arr, int n) { Node* head = NULL; Node* tmp; // Traversing the passed array for (int i = 0; i < n; i++) { // Creating a node if the list // is empty if (head == NULL) { tmp = head = new Node(); } else { tmp->next = new Node(); tmp = tmp->next; } // Created a node with data and // setting child and next pointer // as NULL. tmp->data = arr[i]; tmp->next = tmp->child = NULL; } return head; } // To print the linked list void printMultiLevelList(Node* head) { // While head is not null while (head) { if (head->child) { printMultiLevelList(head->child); } cout << head->data << " "; head = head->next; } } // Driver code int main() { // Initializing the data in arrays(row wise) int arr1[3] = { 1, 2, 3 }; int arr2[2] = { 5, 6 }; int arr3[1] = { 4 }; int arr4[3] = { 7, 8, 9 }; // creating Four linked lists // Passing array and size of array // as parameters Node* head1 = createList(arr1, 3); Node* head2 = createList(arr2, 2); Node* head3 = createList(arr3, 1); Node* head4 = createList(arr4, 3); // Initializing children and next pointers // as shown in given diagram head1->child = head2; head1->next->next->child = head3; head2->next->child = head4; // Creating a null pointer. Node* head = NULL; head = head1; // Function Call to print printMultiLevelList(head); return 0; }
Java
/*package whatever //do not write package name here */ import java.io.*; class GFG { public static class Node { int data; Node next; Node child; }; // A function to create a linked list // with n(size) nodes returns head pointer public static Node createList(int arr[], int n) { Node head = null; Node tmp = null; // Traversing the passed array for (int i = 0; i < n; i++) { // Creating a node if the list // is empty if (head == null) { tmp = head = new Node(); } else { tmp.next = new Node(); tmp = tmp.next; } // Created a node with data and // setting child and next pointer // as NULL. tmp.data = arr[i]; tmp.next = tmp.child = null; } return head; } // To print the linked list public static void printMultiLevelList(Node head) { // While head is not null while (head != null) { if (head.child != null) { printMultiLevelList(head.child); } System.out.print(head.data + " "); head = head.next; } } // Driver code public static void main(String[] args) { int arr1[] = { 1, 2, 3 }; int arr2[] = { 5, 6 }; int arr3[] = { 4 }; int arr4[] = { 7, 8, 9 }; // creating Four linked lists // Passing array and size of array // as parameters Node head1 = createList(arr1, 3); Node head2 = createList(arr2, 2); Node head3 = createList(arr3, 1); Node head4 = createList(arr4, 3); // Initializing children and next pointers // as shown in given diagram head1.child = head2; head1.next.next.child = head3; head2.next.child = head4; // Creating a null pointer. Node head = null; head = head1; // Function Call to print printMultiLevelList(head); } } // This code is contributed by maddler.
Python3
'''package whatever #do not write package name here ''' class Node: def __init__(self): self.data = 0; self.next = None; self.child = None; # A function to create a linked list # with n(size) Nodes returns head pointer def createList(arr, n): head = None; tmp = None; # Traversing the passed array for i in range(n): # Creating a Node if the list # is empty if (head == None): tmp = head = Node(); else: tmp.next = Node(); tmp = tmp.next; # Created a Node with data and # setting child and next pointer # as NULL. tmp.data = arr[i]; tmp.next = tmp.child = None; return head; # To print linked list def printMultiLevelList(head): # While head is not None while (head != None): if (head.child != None): printMultiLevelList(head.child); print(head.data, end=" "); head = head.next; # Driver code if __name__ == '__main__': arr1 = [ 1, 2, 3 ]; arr2 = [ 5, 6] ; arr3 = [ 4 ]; arr4 = [ 7, 8, 9] ; # creating Four linked lists # Passing array and size of array # as parameters head1 = createList(arr1, 3); head2 = createList(arr2, 2); head3 = createList(arr3, 1); head4 = createList(arr4, 3); # Initializing children and next pointers # as shown in given diagram head1.child = head2; head1.next.next.child = head3; head2.next.child = head4; # Creating a None pointer. head = None; head = head1; # Function Call to print printMultiLevelList(head); # This code is contributed by umadevi9616
C#
/*package whatever //do not write package name here */ using System; public class GFG { public class Node { public int data; public Node next; public Node child; }; // A function to create a linked list // with n(size) nodes returns head pointer public static Node createList(int []arr, int n) { Node head = null; Node tmp = null; // Traversing the passed array for (int i = 0; i < n; i++) { // Creating a node if the list // is empty if (head == null) { tmp = head = new Node(); } else { tmp.next = new Node(); tmp = tmp.next; } // Created a node with data and // setting child and next pointer // as NULL. tmp.data = arr[i]; tmp.next = tmp.child = null; } return head; } // To print the linked list public static void printMultiLevelList(Node head) { // While head is not null while (head != null) { if (head.child != null) { printMultiLevelList(head.child); } Console.Write(head.data + " "); head = head.next; } } // Driver code public static void Main(String[] args) { int []arr1 = { 1, 2, 3 }; int []arr2 = { 5, 6 }; int []arr3 = { 4 }; int []arr4 = { 7, 8, 9 }; // creating Four linked lists // Passing array and size of array // as parameters Node head1 = createList(arr1, 3); Node head2 = createList(arr2, 2); Node head3 = createList(arr3, 1); Node head4 = createList(arr4, 3); // Initializing children and next pointers // as shown in given diagram head1.child = head2; head1.next.next.child = head3; head2.next.child = head4; // Creating a null pointer. Node head = null; head = head1; // Function Call to print printMultiLevelList(head); } } // This code is contributed by shikhasingrajput
Javascript
<script> /*package whatever //do not write package name here */ class Node { constructor(){ this.data = 0; this.next = null; this.child = null; } } // A function to create a linked list // with n(size) nodes returns head pointer function createList(arr , n) { var head = null; var tmp = null; // Traversing the passed array for (var i = 0; i < n; i++) { // Creating a node if the list // is empty if (head == null) { tmp = head = new Node(); } else { tmp.next = new Node(); tmp = tmp.next; } // Created a node with data and // setting child and next pointer // as NULL. tmp.data = arr[i]; tmp.next = tmp.child = null; } return head; } // To print the linked list function printMultiLevelList(head) { // While head is not null while (head != null) { if (head.child != null) { printMultiLevelList(head.child); } document.write(head.data + " "); head = head.next; } } // Driver code var arr1 = [ 1, 2, 3 ]; var arr2 = [ 5, 6 ]; var arr3 = [ 4 ]; var arr4 = [ 7, 8, 9 ]; // creating Four linked lists // Passing array and size of array // as parameters var head1 = createList(arr1, 3); var head2 = createList(arr2, 2); var head3 = createList(arr3, 1); var head4 = createList(arr4, 3); // Initializing children and next pointers // as shown in given diagram head1.child = head2; head1.next.next.child = head3; head2.next.child = head4; // Creating a null pointer. var head = null; head = head1; // Function Call to print printMultiLevelList(head); // This code is contributed by Rajput-Ji </script>
5 7 8 9 6 1 2 4 3
Publicación traducida automáticamente
Artículo escrito por anuragsingh1022 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA