re-connect the current node to its previous node i.e. curNo

i);scanf(%d。

*temp;int data。

n);createList(n);printf(\nData in the list \n);displayList();/** Reverse the list*/printf(\nPress 1 to reverse the order of singly linked list\n);scanf(%d。

Singly Linked List, re-connect the current node to its previous node i.e. curNode-next = prevNode; . Point the previous node to current node and current node to head node. Means they should now point to prevNode = curNode; and curNode = head . Repeat steps 3-5 till head pointer becomes NULL . Now, choice;/** Create a singly linked list of n nodes*/printf(Enter the total number of nodes: );scanf(%d, disconnect the previous node i.e. the first node from others. We will make sure that it points to none. As this node is going to be our last node. Perform operation prevNode-next = NULL . Move head node to its next node i.e. head = head-next . Now, *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 LIST\n);}}/* * Display entire list */void displayList(){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 = %d\n。

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, after all nodes has been re-connected in the reverse order. Make the last node as the first node. Means the head pointer should point to prevNode pointer. Perform head = prevNode; . Finally you end up with a reversed linked list of its original. Program to reverse a Singly Linked List/** * C program to reverse a Singly Linked List */#include stdio.h#include stdlib.h/* Structure of a node */struct node {int data; //Data partstruct node *next; //Address part}*head;/* Functions used in the program */void createList(int n);void reverseList();void displayList();int main(){int n, Functions。

data);head-data = data; // Link the data field with datahead-next = NULL; // Link the address field to NULLtemp = 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;}else{printf(Enter the data of node %d: ,。

Dynamic memory allocation Algorithm to reverse a Singly Linked List Algorithm to reverse a Singly Linked List %%Input : head node of the linked list Begin: If (head != NULL ) thenprevNode ← headhead ← head.nextcurNode ← headprevNode.next ← NULL While (head != NULL ) dohead ← head.nextcurNode.next ← prevNodeprevNode ← curNodecurNode ← head End while head ← prevNode End if End Steps to reverse a Singly Linked List Create two more pointers other than head namely prevNode and curNode that will hold the reference of previous node and current node respectively. Make sure that prevNode points to first node i.e. prevNode = head . head should now point to its next node i.e. the second node head = head-next . curNode should also points to the second node i.e. curNode = head . Now。

Write a C program to create a singly linked list of n nodes and reverse the order of nodes of the given linked list. How to reverse a singly linked list in C. Algorithm and steps to reverse a singly linked list. Required knowledge Basic C programming, choice);if(choice == 1){reverseList();}printf(\nData in the list\n);displayList();return 0;}/* * Create a list of n nodes */void createList(int n){struct node *newNode, temp-data); // Print the data of current nodetemp = temp-next;// Move to next node}}}Enter the total number of nodes: 5Enter the data of node 1: 10Enter the data of node 2: 20Enter the data of node 3: 30Enter the data of node 4: 40Enter the data of node 5: 50SINGLY LINKED LIST CREATED SUCCESSFULLYData in the listData = 10Data = 20Data = 30Data = 40Data = 50Press 1 to reverse the order of singly linked list1SUCCESSFULLY REVERSED LISTData in the listData = 50Data = 40Data = 30Data = 20Data = 10 , data);newNode-data = data; // Link the data field of newNode with datanewNode-next = NULL; // Link the address field of newNode with NULLtemp-next = newNode; // Link previous node i.e. temp to the newNodetemp = temp-next;}}printf(SINGLY LINKED LIST CREATED SUCCESSFULLY\n);}}/* * Reverse the order of nodes of a singly linked list */void reverseList(){struct node *prevNode。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://acg.inmoke.com/zixun/Lolita/19534.html