Convierta una lista enlazada individualmente en una lista enlazada circular

Dada una lista enlazada individualmente, tenemos que convertirla en una lista enlazada circular. Por ejemplo, se nos ha dado una lista de enlaces simples con cuatro Nodes y queremos convertir esta lista de enlaces simples en una lista de enlaces circulares.
 

Singly-Linked-List

C++

// Program for converting singly linked list
// into circular linked list.
#include <bits/stdc++.h>
  
/* Linked list node */
struct Node {
    int data;
    struct Node* next;
};
  
// Function that convert singly linked list
// into circular linked list.
struct Node* circular(struct Node* head)
{
    // declare a node variable start and 
    // assign head node into start node.
    struct Node* start = head;
  
    // check that while head->next not equal
    // to NULL then head points to next node.
    while (head->next != NULL)
        head = head->next;
          
    // if head->next points to NULL then 
    // start assign to the head->next node.
    head->next = start;
    return start;
}
  
void push(struct Node** head, int data)
{
    // Allocate dynamic memory for newNode.
    struct Node* newNode = (struct Node*)malloc
                          (sizeof(struct Node));
  
    // Assign the data into newNode.
    newNode->data = data;
  
    // newNode->next assign the address of 
    // head node.
    newNode->next = (*head);
  
    // newNode become the headNode.
    (*head) = newNode;
}
  
// Function that display the elements of
// circular linked list.
void displayList(struct Node* node)
{
    struct Node* start = node;
  
    while (node->next != start) {
        printf("%d ", node->data);
        node = node->next;
    }
      
    // Display the last node of circular 
    // linked list.
    printf("%d ", node->data);
}
  
// Driver program to test the functions
int main()
{
    // Start with empty list
    struct Node* head = NULL;
  
    // Using push() function to construct
    // singly linked list
    // 17->22->13->14->15
    push(&head, 15);
    push(&head, 14);
    push(&head, 13);
    push(&head, 22);
    push(&head, 17);
  
    // Call the circular_list function that 
    // convert singly linked list to circular
    // linked list.
    circular(head);
  
    printf("Display list: \n");
    displayList(head);
  
    return 0;
}

Java

// Program for converting 
// singly linked list into
// circular linked list.
class GFG
{
  
/*Linked list node */
static class Node 
{
    int data;
    Node next;
};
  
// Function that convert 
// singly linked list into
// circular linked list.
static Node circular(Node head)
{
    // declare a node variable 
    // start and assign head 
    // node into start node.
    Node start = head;
  
    // check that while head.next
    // not equal to null then head 
    // points to next node.
    while (head.next != null)
        head = head.next;
          
    // if head.next points to null 
    // then start assign to the 
    // head.next node.
    head.next = start;
    return start;
}
  
static Node push(Node head, int data)
{
    // Allocate dynamic memory 
    // for newNode.
    Node newNode = new Node();
  
    // Assign the data into newNode.
    newNode.data = data;
  
    // newNode.next assign the 
    // address of head node.
    newNode.next = (head);
  
    // newNode become the headNode.
    (head) = newNode;
      
    return head;
}
  
// Function that display the elements 
// of circular linked list.
static void displayList( Node node)
{
    Node start = node;
  
    while (node.next != start)
    {
        System.out.print(" "+ node.data);
        node = node.next;
    }
      
    // Display the last node of  
    // circular linked list.
    System.out.print(" " + node.data);
}
  
// Driver Code
public static void main(String args[])
{
    // Start with empty list
    Node head = null;
  
    // Using push() function to 
    // convert singly linked list
    // 17.22.13.14.15
    head = push(head, 15);
    head = push(head, 14);
    head = push(head, 13);
    head = push(head, 22);
    head = push(head, 17);
  
    // Call the circular_list function 
    // that convert singly linked 
    // list to circular linked list.
    circular(head);
  
    System.out.print("Display list: \n");
    displayList(head);
}
}
  
// This code is contributed 
// by Arnab Kundu

Python3

# Python3 program for converting 
# singly linked list into 
# circular linked list. 
import sys
  
# Linked list node 
class Node:
    def __init__(self,data):
        self.data = data
        self.next = None
  
def push(head, data):
    if not head:
        return Node(data)
  
    # Allocate dynamic memory 
    # for newNode. 
    # Assign the data into newNode. 
    newNode = Node(data)
  
    # newNode.next assign the 
    # address of head node. 
    newNode.next = head
  
    # newNode become the headNode. 
    head = newNode
    return head
  
# Function that convert 
# singly linked list into 
# circular linked list. 
def circular(head):
  
    # declare a node variable 
    # start and assign head 
    # node into start node. 
    start = head
  
    # check that while head.next 
    # not equal to null then head 
    # points to next node. 
    while(head.next is not None):
        head = head.next
  
    # if head.next points to null 
    # then start assign to the 
    # head.next node.     
    head.next = start
    return start
  
# Function that display the elements 
# of circular linked list. 
def displayList(node):
    start = node
    while(node.next is not start):
        print("{} ".format(node.data),end="")
        node=node.next
  
    # Display the last node of 
    # circular linked list. 
    print("{} ".format(node.data),end="")
  
# Driver Code
if __name__=='__main__':
      
    # Start with empty list 
    head=None
  
    # Using push() function to 
    # convert singly linked list 
    # 17.22.13.14.15 
    head=push(head,15)
    head=push(head,14)
    head=push(head,13)
    head=push(head,22)
    head=push(head,17)
  
    # Call the circular_list function 
    # that convert singly linked 
    # list to circular linked list. 
    circular(head)
    print("Display List:")
    displayList(head)
  
# This Code is Contributed By Vikash Kumar 37

C#

// C# Program for converting 
// singly linked list into 
// circular linked list. 
using System;
  
class GFG 
{ 
  
    /*Linked list node */
    public class Node 
    { 
        public int data; 
        public Node next; 
    }; 
  
    // Function that convert 
    // singly linked list into 
    // circular linked list. 
    static Node circular(Node head) 
    { 
        // declare a node variable 
        // start and assign head 
        // node into start node. 
        Node start = head; 
  
        // check that while head.next 
        // not equal to null then head 
        // points to next node. 
        while (head.next != null) 
            head = head.next; 
  
        // if head.next points to null 
        // then start assign to the 
        // head.next node. 
        head.next = start; 
        return start; 
    } 
  
    static Node push(Node head, int data) 
    { 
        // Allocate dynamic memory 
        // for newNode. 
        Node newNode = new Node(); 
  
        // Assign the data into newNode. 
        newNode.data = data; 
  
        // newNode.next assign the 
        // address of head node. 
        newNode.next = (head); 
  
        // newNode become the headNode. 
        (head) = newNode; 
  
        return head; 
    } 
  
    // Function that display the elements 
    // of circular linked list. 
    static void displayList( Node node) 
    { 
        Node start = node; 
  
        while (node.next != start) 
        { 
            Console.Write(" " + node.data); 
            node = node.next; 
        } 
  
        // Display the last node of 
        // circular linked list. 
        Console.Write(" " + node.data); 
    } 
  
    // Driver Code 
    public static void Main(String []args) 
    { 
        // Start with empty list 
        Node head = null; 
  
        // Using push() function to 
        // convert singly linked list 
        // 17.22.13.14.15 
        head = push(head, 15); 
        head = push(head, 14); 
        head = push(head, 13); 
        head = push(head, 22); 
        head = push(head, 17); 
  
        // Call the circular_list function 
        // that convert singly linked 
        // list to circular linked list. 
        circular(head); 
  
        Console.Write("Display list: \n"); 
        displayList(head); 
    } 
} 
  
// This code is contributed 29AjayKumar

Javascript

<script>
// Javascript Program for converting 
// singly linked list into
// circular linked list.    /* Linked list node */
class Node
{
        constructor(val) 
        {
            this.data = val;
            this.next = null;
        }
    }
  
    // Function that convert
    // singly linked list into
    // circular linked list.
    function circular( head)
    {
      
        // declare a node variable
        // start and assign head
        // node into start node.
         start = head;
  
        // check that while head.next
        // not equal to null then head
        // points to next node.
        while (head.next != null)
            head = head.next;
  
        // if head.next points to null
        // then start assign to the
        // head.next node.
        head.next = start;
        return start;
    }
  
    function push( head , data) 
    {
      
        // Allocate dynamic memory
        // for newNode.
         newNode = new Node();
  
        // Assign the data into newNode.
        newNode.data = data;
  
        // newNode.next assign the
        // address of head node.
        newNode.next = (head);
  
        // newNode become the headNode.
        (head) = newNode;
  
        return head;
    }
  
    // Function that display the elements
    // of circular linked list.
    function displayList( node)
    {
         start = node;
  
        while (node.next != start)
        {
            document.write(" " + node.data);
            node = node.next;
        }
  
        // Display the last node of
        // circular linked list.
        document.write(" " + node.data);
    }
  
    // Driver Code
      
        // Start with empty list
         head = null;
  
        // Using push() function to
        // convert singly linked list
        // 17.22.13.14.15
        head = push(head, 15);
        head = push(head, 14);
        head = push(head, 13);
        head = push(head, 22);
        head = push(head, 17);
  
        // Call the circular_list function
        // that convert singly linked
        // list to circular linked list.
        circular(head);
  
        document.write("Display list: <br/>");
        displayList(head);
  
// This code is contributed by gauravrajput1
</script>

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *