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)