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(head == NULL) { return 0; } current = head->next; while(current != head) { length++; current = current->next; } return length; } void insertFirst(int key, int data) { struct node *link = (struct node*) malloc(sizeof(struct node)); link->key = key; link->data = data; if (isEmpty()) { head = link; head->next = head; } else { link->next = head; head = link; } } struct node * deleteFirst() { struct node *tempLink = head; if(head->next == head) { head = NULL; return tempLink; } head = head->next; return tempLink; } void printList() { struct node *ptr = head; printf("\n[ "); 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: "); 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->next=first ; } } void deletenode(int k) { struct node *p , *follow ; 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) first=last=NULL ; else if(p==first) { first=first->next ; last->next=first ; } else if(p==last) { last=follow ; last->next=first ; } else follow->next=p->next ; free(p) ; } } 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
Post a Comment