Doubly Circular Linked List Program In C Code Example


Example 1: circular linked list in c

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h>  struct node {    int data;    int key; 	    struct node *next; };  struct node *head = NULL; struct node *current = NULL;  bool isEmpty() {    return head == NULL; }  int length() {    int length = 0;     //if list is empty    if(head == NULL) {       return 0;    }     current = head->next;     while(current != head) {       length++;       current = current->next;       } 	    return length; }  //insert link at the first location void insertFirst(int key, int data) {     //create a link    struct node *link = (struct node*) malloc(sizeof(struct node));    link->key = key;    link->data = data; 	    if (isEmpty()) {       head = link;       head->next = head;    } else {       //point it to old first node       link->next = head; 		       //point first to new first node       head = link;    }     }  //delete first item struct node * deleteFirst() {     //save reference to first link    struct node *tempLink = head; 	    if(head->next == head) {         head = NULL;       return tempLink;    }          //mark next to first link as first     head = head->next; 	    //return the deleted link    return tempLink; }  //display the list void printList() {     struct node *ptr = head;    printf("\n[ "); 	    //start from the beginning    if(head != NULL) { 	       while(ptr->next != ptr) {               printf("(%d,%d) ",ptr->key,ptr->data);          ptr = ptr->next;       }    } 	    printf(" ]"); }  void main() {    insertFirst(1,10);    insertFirst(2,20);    insertFirst(3,30);    insertFirst(4,1);    insertFirst(5,40);    insertFirst(6,56);      printf("Original List: ");  	    //print list    printList();     while(!isEmpty()) {                   struct node *temp = deleteFirst();       printf("\nDeleted value:");         printf("(%d,%d) ",temp->key,temp->data);    }    	    printf("\nList after deleting all items: ");    printList();    }

Example 2: Circular Linked List in c++

#include <iostream> using namespace std;  #define  NULL  0   struct  node {   int  data ;   struct  node  *next ; } ;  struct  node  *first=NULL ; struct  node  *last=NULL ;  void  create() {   int  i , n ;   struct  node  *pnode , *p ;    printf("Enter the number of nodes required:\n") ;   scanf("%d",&n) ;    printf("Enter the data value of each node:\n") ;   for(i=1 ; i<=n ; i++)   {     pnode=(struct node*)malloc(sizeof(struct node)) ;     if(pnode==NULL)     {       printf("Memory overflow. Unable to create.\n") ;       return ;     }      scanf("%d",&pnode->data) ;      if(first==NULL) 	 first=last=pnode ;     else     { 	  last->next=pnode ; 	  last=pnode ;    /* last keeps track of last node */     }      last->next=first ;   } }  /* This function will delete a node with value k from the Linked List if such a node exists */ void  deletenode(int  k) {   struct  node  *p , *follow ;    /* searching the required node */   p=first ;   follow=NULL ;   while(follow!=last)   {     if(p->data==k) 	  break ;     follow=p ;     p=p->next ;   }    if(follow==last)     printf("Required node not found.\n") ;   else   {     if(p==first&&p==last)  /* deleting the one and the only node */ 	  first=last=NULL ;     else if(p==first)       /* deleting the first node */     {       first=first->next ;       last->next=first ;     }     else if(p==last)      /* deleting the last node */     {       last=follow ;       last->next=first ;     }     else		/* deleting any other node */       follow->next=p->next ;      free(p) ;   } }  /* This function will go through all the nodes of Linked List exactly once and will display data value of each node */ void  traverse() {   struct  node  *p , *follow ;   if(first==NULL)     printf("Circularly Linked List Empty") ;   else   {     printf("Circularly Linked List is as shown: \n") ;      p=first ;     follow = NULL ;     while(follow!=last)     {       printf("%d " , p->data) ;       follow=p ;       p=p->next ;     }      printf("\n") ;   } }  int main() {   int  x , k , ch ;     do   {     printf("\n Menu: \n") ;     printf("1:Create Linked List \n") ;     printf("2:Delete Node \n") ;     printf("3:Traverse \n") ;     printf("4:Exit \n") ;      printf("\nEnter your choice: ") ;     scanf("%d",&ch) ;      switch(ch)     {       case 1:       create() ;       break ;        case 2:       printf("Enter the data value of the node to be deleted: ") ;       scanf("%d",&k) ;       deletenode(k) ;       break ;        case 3:       traverse() ;       break ;        case 4:       break ;     }  }  while(ch!=4) ;   return 0; }

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?