Below is the complete working C code for reverse linked list. Here is the detailed explaination of how to reverse the list.
#include<stdio.h> #include<stdlib.h> struct node { int info; struct node *next; }; typedef struct node Node; /***************************************************************************** This function is used to create the new linked list or adding he new node at the end of the list. *************************************************************************/ Node* append(Node *h, int info) { Node *tempHead=h; Node *newNode = (Node*)malloc(sizeof(Node)); newNode->info = info; newNode->next = NULL; if(tempHead == NULL) // if the list has zero elements. make new node as a head { h=newNode; } else if(tempHead->next==NULL) // if the list is having only one node { tempHead->next = newNode; } else { Node *tempNode = h; while(tempNode->next != NULL) // if the list has more than one node, so moving to the last node { tempNode = tempNode->next; } tempNode->next = newNode; // appending the new node at the end } return h; } /***************************************************************************** for displaying the nodes in the list *****************************************************************************/ void display(Node *h) { Node *temp = h; while (temp->next!=NULL) { printf("%d->",temp->info); temp = temp->next; } printf("%d\n",temp->info); } /***************************************************************************** This function is used to reverse the given linked list. e.g Input: 1->2->3->4->5->6->7 Output: 7->6->5->4->3->2->1 *****************************************************************************/ Node *reverseList(Node *head) { Node *newHead,*temp; temp = head; newHead = head; if(newHead == temp) { temp=head->next; head = head->next; newHead->next = NULL; } while(head!=NULL) { temp=head->next; head->next = newHead; newHead = head; head = temp; } return newHead; } main() { Node *head = NULL; int i; for (i=1;i<=10;i++) { head = append(head,i*10); } display(head); head = reverseList(head); display(head); }
1 comment:
Thanks for wwriting
Post a Comment