Saltar al contenido

mostrar la lista doblemente enlazada en orden inverso en el ejemplo de código c

Al fin después de mucho trabajar pudimos encontrar la contestación de este enigma que agunos usuarios de nuestro espacio tienen. Si tienes algún detalle que aportar no dudes en dejar tu conocimiento.

Ejemplo: invertir una lista enlazada individualmente en c

/**
 * C program to reverse a Singly Linked List
 */

#include <stdio.h>
#include <stdlib.h>/* Structure of a node */
struct node int data;//Data part
    struct node *next;//Address part*head;/* Functions used in the program */voidcreateList(int n);voidreverseList();voiddisplayList();intmain()int n, choice;/*
     * Create a singly linked list of n nodes
     */printf("Enter the total number of nodes: ");scanf("%d",&n);createList(n);printf("nData in the list n");displayList();/*
     * Reverse the list
     */printf("nPress 1 to reverse the order of singly linked listn");scanf("%d",&choice);if(choice ==1)reverseList();printf("nData in the listn");displayList();return0;/*
 * Create a list of n nodes
 */voidcreateList(int n)
    struct node *newNode,*temp;int data, i;if(n <=0)printf("List size must be greater than zero.n");return;

    head =(struct node *)malloc(sizeof(struct node));/*
     * If unable to allocate memory for head node
     */if(head == NULL)printf("Unable to allocate memory.");else/*
         * Read data of node from the user
         */printf("Enter the data of node 1: ");scanf("%d",&data);

        head->data = data;// Link the data field with data
        head->next = NULL;// Link the address field to NULL

        temp = head;/*
         * Create n nodes and adds to linked list
         */for(i=2; i<=n; i++)
            newNode =(struct node *)malloc(sizeof(struct node));/* If memory is not allocated for newNode */if(newNode == NULL)printf("Unable to allocate memory.");break;elseprintf("Enter the data of node %d: ", i);scanf("%d",&data);

                newNode->data = data;// Link the data field of newNode with data
                newNode->next = NULL;// Link the address field of newNode with NULL

                temp->next = newNode;// Link previous node i.e. temp to the newNode
                temp = temp->next;printf("SINGLY LINKED LIST CREATED SUCCESSFULLYn");/*
 * Reverse the order of nodes of a singly linked list
 */voidreverseList()
    struct node *prevNode,*curNode;if(head != NULL)
        prevNode = head;
        curNode = head->next;
        head = head->next;

        prevNode->next = NULL;// Make first node as last nodewhile(head != NULL)
            head = head->next;
            curNode->next = prevNode;

            prevNode = curNode;
            curNode = head;

        head = prevNode;// Make last node as headprintf("SUCCESSFULLY REVERSED LISTn");/*
 * Display entire list
 */voiddisplayList()
    struct node *temp;/*
     * If the list is empty i.e. head = NULL
     */if(head == NULL)printf("List is empty.");else
        temp = head;while(temp != NULL)printf("Data = %dn", temp->data);// Print the data of current node
            temp = temp->next;// Move to next node

Nos puedes confirmar nuestro quehacer dejando un comentario o puntuándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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