Stack VS Queue difference:
code:
/* * C Program to Implement a Queue using an Array */ #include <stdio.h> #include <conio.h> #define N 10 int queue[N]; int rear = - 1; int front = - 1; main() { int choice; while (1) { printf("1.Insert element to queue \n"); printf("2.Delete element from queue \n"); printf("3.Display all elements of queue \n"); printf("4.Quit \n"); printf("Enter your choice : "); scanf("%d", &choice); switch (choice) { case 1:insert(); break; case 2:delete(); break; case 3:display(); break; case 4:exit(1); default:printf("Wrong choice \n"); } /*End of switch*/ } /*End of while*/ } /*End of main()*/ insert() { int element; if (rear == N - 1) printf("Queue Overflow \n"); else { if (front == - 1) /*If queue is initially empty */ front = 0; printf("Inset the element in queue : "); scanf("%d", &element); rear = rear + 1; queue[rear] = element; } } delete() { if (front == - 1 || front > rear) { printf("Queue Underflow \n"); return ; } else { printf("Element deleted from queue is : %d\n", queue[front]); front = front + 1; } } display() { int i; if (front == - 1) printf("Queue is empty \n"); else { printf("Queue is : \n"); for (i = front; i <= rear; i++) printf("%d ", queue[i]); printf("\n"); } } Output:- 1.Insert element to queue 2.Delete element from queue 3.Display all elements of queue 4.Quit Enter your choice : 1 Inset the element in queue : 10 1.Insert element to queue 2.Delete element from queue 3.Display all elements of queue 4.Quit Enter your choice : 1 Inset the element in queue : 50 1.Insert element to queue 2.Delete element from queue 3.Display all elements of queue 4.Quit Enter your choice : 1 Inset the element in queue : 30 1.Insert element to queue 2.Delete element from queue 3.Display all elements of queue 4.Quit Enter your choice : 1 Inset the element in queue : 60 1.Insert element to queue 2.Delete element from queue 3.Display all elements of queue 4.Quit Enter your choice : 2 Element deleted from queue is : 10 1.Insert element to queue 2.Delete element from queue 3.Display all elements of queue 4.Quit Enter your choice : 3 Queue is : 50 30 60 1.Insert element to queue 2.Delete element from queue 3.Display all elements of queue 4.Quit Enter your choice : 4
My implementation:
#include<stdio.h> #include<stdlib.h> #define MAX 10 int q[MAX]; int front=-1; int rear=-1; void Insert() { int element; if(rear==MAX-1) printf("\nQueue Overflow\n"); else { if(front==-1) front=0; printf("Insert the element in queue: "); scanf("%d",&element); rear=rear+1; q[rear]=element; } } void Delete() { if(front==-1||front>rear) { printf("\nQueue Underflow\n"); return; } else { printf("\nElement deleted from queue is: %d\n",q[front]); front=front+1; } } void Display() { int i; if(front==-1) printf("\nQueue is empty\n"); else { printf("\nQueue is: "); for(i=front; i<=rear; i++) printf("%d ",q[i]); printf("\n"); } } int main() { int choice; while(1) { printf("1. Insert element to queue\n"); printf("2. Delete elements\n"); printf("3. Display all elements\n"); printf("4. Quit\n"); printf("Enter your choice: "); scanf("%d",&choice); switch(choice) { case 1: Insert(); break; case 2: Delete(); break; case 3: Display(); break; case 4: exit(1); default: printf("Wrong Choice\n"); } } return 0; }
Another Video:
Code from the video Mycodeschool(Using circular queue):
#include<stdio.h> using namespace std; #define MAX_SIZE 101 int A[MAX_SIZE]; int fronta,rear; bool IsEmpty() { return(fronta==-1 && rear==-1); } bool IsFull() { // if(rear==MAX_SIZE-1) if((rear+1)%MAX_SIZE==fronta) return true; else return false; } void Enqeue(int x) { printf("Enqueuing: %d",x); if(IsFull()){ printf("Error: Queue is full\n"); return; } else if(IsEmpty()) { fronta=rear=0; } else { rear=(rear+1)%MAX_SIZE; } A[rear]=x; } void Dequeue() { printf("Dequeuing: "); if(IsEmpty()) return; else if(fronta==rear) fronta=rear=1; else fronta=(fronta+1)%MAX_SIZE; } int Froonta() { if(fronta==-1) { printf("Can't return from an empty queue\n"); return -1; } return A[fronta]; } void print() { int counta=(rear+MAX_SIZE-fronta)%MAX_SIZE+1; printf(" Queue: "); int i; for(i=0; i<counta; i++) { int index=(fronta+i)%MAX_SIZE; printf("%d ",A[index]); //Index of element while traaversing circulrly from front } printf("\n"); } int main() { Enqeue(2); print(); Enqeue(4); print(); Enqeue(6); print(); Enqeue(8); print(); Dequeue(); print(); Enqeue(8); print(); return 0; }