Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

LAB-03

~S.Soumya
Question 01:-Write a program to implement queue operations using with
arrays.
CODE:-
#include<stdio.h>
#include<stdlib.h>
#define max 50
void insertion();
void deletion();
void traversal();
int Q[max],rear=-1,front=-1;
int main()
{
int choice;
MENU:{
printf("1.Insrt element to queue\n2.Delete element from queue\n3.Traverse
all elements of queue\n4.Quit\n");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
insertion();
goto MENU;
break;
case 2:
deletion();
goto MENU;
break;
case 3:
traversal();
goto MENU;
break;
case 4:
printf("\n\n*****Thank you*****\n\n");
exit(1);
default:
printf("Please enter valid choice\n\n");
goto MENU;
}
}
}
void insertion(){
int item;
if(rear==max-1)
{
printf("Queue overflow\n");
}
else
{
if(front==-1)
front=0;
printf("insert the element in queue:");
scanf("%d",&item);
rear=rear+1;
Q[rear]=item;
printf("\n\n");
}
}
void deletion()
{
if (front == - 1 || front > rear)
{
printf("Queue Underflow \n");
return ;
}
else
{
printf("Element deleted from queue is : %d", Q[front]);
front = front + 1;
printf("\n\n");
}
}
void traversal()
{
int i;
if (front == - 1)
printf("Queue is empty \n");
else
{
printf("Queue is :");
for (i = front; i <= rear; i++)
printf("%d", Q[i]);
printf("\n\n\n");
}
}
OUTPUT:-
Question 02:- Write a program to implement queue operations using with
linked lists
CODE:-
#include<stdio.h>
#include<stdlib.h>

struct node{
int data;
struct node *next;
}*front=NULL,*rear=NULL;

void enqueue(int n){


struct node *temp=(struct node *)malloc(sizeof(struct node));
temp->data=n;
temp->next=NULL;
if(rear==NULL){
front=rear=temp;
return;
}
rear->next=temp;
rear=temp;
}

int dequeue(){
if(front==NULL){
printf("the queue is already empty...\n");
return 0;
}
else if(front==rear){
int n;
n=front->data;
free(front);
front=rear=NULL;
return n;
}
else{
struct node *temp;
int n=front->data;
temp=front;
front =front ->next;
free(temp);
return n;
}
}
int main(){
int n;
while(1){
printf("\n\n\n\nenter 1 for enqueue\nenter 2 for dequeue\nenter 3 for
exiting");
scanf("%d",&n);
switch(n){
case 1:
printf("enter the number: ");
scanf("%d",&n);
enqueue(n);
break;
case 2:
n=dequeue();
if(n){
printf("the deleted integer is: %d\n",n);
}
break;
case 3:
exit(0);
}
}
}
OUTPUT:-
Question 03:- Write a program to implement Circular queue operations using
with circular arrays
CODE:-
#include<stdio.h>
int q[5];
int f,r;
r=-1;
f=-1;

void display(){
if(f==-1){
printf("the queue is empty...");
return;
}
printf("the elements of the queue are: ");
for(int i=f;i!=r;i=(i+1)%5){
printf("%d ",q[i]);
}
printf("%d",q[r]);
}
void peek(){
if(f==-1){
printf("the queue is empty...\n");
return;
}
printf("the peek element is: %d",q[r]);
}

void enqueue(int n){


if(r==-1){
q[++r]=n;
f=0;
return;
}
else if((r+1)%5==f){
printf("the queue is full..");
return;
}
else{
r=(r+1)%5;
q[r]=n;
return;
}
}

int dequeue(){
if(f==-1){
printf("the queue is empty..\n");
return 0;
}
else if(f==r){
int n;
n=q[f];
f=r=-1;
return n;
}
else{
int n;
n=q[f];
f=(f+1)%5;
return n;
}
}

int main(){
int n;
while(1){
printf("\n\n\n\nenter 1 for enqueue\nenter 2 for dequeue\nenter 3 for
peek\nenter 4 for display\nenter 5 for exit\n");
scanf("%d",&n);
switch(n){
case 1:
printf("enter the number: ");
scanf("%d",&n);
enqueue(n);
break;
case 2:
n=dequeue();
if(n){
printf("the deleted integer is: %d\n",n);
}
break;
case 3:
peek();
break;
case 4:
display();
break;
case 5:
exit(0);
}
}
}
OUTPUT:-

Question 04:- Write a program to implement data structure which permits


insertion and deletion at both the ends
CODE:-
#include<stdio.h>
#include<stdlib.h>
int q[10];
int f,r;
f=-1;
r=-1;
void display(){
if(r==-1){
printf("the queue is empty...\n");
return;
}
printf("the elements in the queue are: ");
for(int i=f;i<=r;i++){
printf("%d ",q[i]);
}
}

void peek(){
if(r==-1){
printf("the queue is empty..\n");
return;
}
printf("the peek element is: %d",q[r]);
}

void enqueuefront(int n){


if(f==0){
printf("no space to add the element\n");
}
else if(f==-1){
q[++f]=n;
r=f;
}
else{
q[--f]=n;
}

void enqueue(int n){


if(r==9){
printf("the queue is full..\n");
return;
}
if(r==-1){
q[++r]=n;
f=0;
return;
}
else{
q[++r]=n;
return;
}
}
int dequeue(){
if(f==-1){
printf("the queue is empty...\n");
return;
}
else if(f==r){
int n;
n=q[f];
r=-1;
f=-1;
return n;
}
else{
return q[f++];
}

int main(){
int n;
while(1){
printf("\n\n\n\nenter 1 for enqueue\nenter 2 for dequeue\nenter 3 for
peek\nenter 4 for display\nenter 5 for exiting: ");
scanf("%d",&n);
switch(n){
case 1:
printf("enter 1 for adding at the last\n2 for adding at the beginning:
");
scanf("%d",&n);
if(n==1){
printf("enter the number: ");
scanf("%d",&n);
enqueue(n);
}
else if(n==2){
printf("enter the number: ");
scanf("%d",&n);
enqueuefront(n);
}
break;
case 2:
n=dequeue();
if(n){
printf("the deleted integer is: %d\n",n);
}
break;
case 3:
peek();
break;
case 4:
display();
break;
case 5:
exit(0);
}
}
}
OUTPUT:-

You might also like