Deque Using Linked List
kaziamir
c_cpp
2 years ago
2.6 kB
6
Indexable
/* This code is the code for implimenting DEQUE using Linked List. N.B: I used char type data for node */ #include<stdio.h> #include<stdlib.h> typedef struct node{ char data; struct node *next; }node; node *left = NULL, *right = NULL; void enqueLeft(char x){ node *newNode = (node *)malloc(sizeof(node)); if(newNode!=NULL){ newNode->data = x; newNode->next = NULL; newNode->next = left; left = newNode; if(right == NULL){ right = newNode; } printf("%c Enqued at left\n",x); } else{ printf("Queue overflow\n"); } } void enqueRight(char x){ node *newNode = (node *)malloc(sizeof(node)); if(newNode!=NULL){ newNode->data = x; newNode->next = NULL; if(right==NULL){ right = newNode; left = newNode; } else{ right->next = newNode; right = newNode; } printf("%c Enqued at Right\n", x); } else{ printf("Queue overflow\n"); } } void dequeLeft(){ if(left!=NULL){ node *tmp = left; left = left->next; printf("%c Dequed from left\n", tmp->data); free(tmp); if(left==NULL){ right = NULL; } } else{ printf("Queue Underflow\n"); } } void dequeRight(){ if(right!=NULL){ node *tmp = right; node *p = left; if(left==right){ left = NULL; right = NULL; } else{ while(p->next!=right){ p = p->next; } p->next = NULL; right = p; } printf("%c Dequed from left\n", tmp->data); free(tmp); } else{ printf("Queue Underflow\n"); } } void display(){ if(left!=NULL){ printf("Current Queue: "); node *p = left; while(p!=NULL){ printf("%c ",p->data); p = p->next; } printf("\n"); } else{ printf("Queue Empty\n"); } } int main(){ enqueLeft('W'); display(); enqueLeft('X'); display(); enqueRight('Y'); display(); enqueRight('Z'); display(); /*dequeLeft(); display(); dequeLeft(); display(); dequeLeft(); display(); dequeLeft(); display(); dequeLeft(); display();*/ dequeRight(); display(); dequeRight(); display(); dequeRight(); display(); dequeRight(); display(); dequeRight(); display(); dequeRight(); display(); return 0; }
Editor is loading...