[go: up one dir, main page]

0% found this document useful (0 votes)
21 views14 pages

Programs

Uploaded by

Lord Breacher
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views14 pages

Programs

Uploaded by

Lord Breacher
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Queue using linked list

#include<stdio.h>

#include<stdlib.h>

#define MAX 10

int queue[MAX];

int front=-1,rear=-1;

void enque(int ele);

void deque();

void display();

void Front();

void Rear();

int is_full();

int is_empty();

void main(){

int c;

while(c!=8){

printf("----QUEUE DATA STRUCTURES----\n");

printf("\n1.inserting element in queue\n2.deleting element\n3.display queue\n4.display front


element\n5.display last element\n6.queue full\n7.queue empty\n8.exit\n");

printf("enter your choice:");

scanf("%d",&c);

switch(c){

case 1:

int ele;

printf("\nenter the elemnt to insert\n");

scanf("%d",&ele);

enque(ele);

break;

case 2:

deque();

break;
case 3:

display();

break;

case 4:

Front();

break;

case 5:

Rear();

break;

case 6:

int l =is_full();

if(l==1){

printf("\nqueue is full\n");

}else{

printf("\nqueue is not full\n");

break;

case 7:

int k = is_empty();

if(k==1){

printf("\nqueue is empty\n");

}else{

printf("\nqueue has elemnts\n");

break;

case 8:

exit(0);

void enque(int ele){


if(rear==MAX-1){

printf("\n queue is overflown\n");

if(front==-1){

front=0;

rear+=1;

queue[rear]=ele;

void deque(){

if(front==-1&&rear==-1){

printf("\nqueue is underflowing\n");

else if(front>rear){

printf("\nno elements to delete\n");

else{

queue[front++];

void display(){

if(front==-1&&rear==-1){

printf("\nno elemntd to delete\n");

return;

for(int i=front;i<=rear;i++){

printf(" %d ",queue[i]);

void Front(){

if(front==-1&&rear==-1){
printf("no elemntd to delete");

return;

printf(" front element in the queue is %d \n",queue[front]);

void Rear(){

if(front==-1&&rear==-1){

printf("no elemntd to delete");

return;

printf("rear element is %d \n",queue[rear]);

int is_empty(){

if(front==-1&&rear==-1||front>rear){

return 1;

return 0;

int is_full(){

if(rear==MAX-1){

return 1;

return 0;

Printer job problem

#include<stdio.h>

#include<stdlib.h>

#define MAX 10

struct queue{
int job_id;

int num_pages;

struct queue *next;

};

static int count=0;

struct queue *front=NULL,*rear=NULL;

void enque(int jobid,int pages);

void deque();

void display();

int main(){

int i,j,n,temp,temp1;

printf("enter number of jobs : ");

scanf("%d",&n);

struct queue jobs[n];

for(i=0;i<n;i++){

printf("%d job values\n",i+1);

printf("enter job id : ");

scanf("%d",&jobs[i].job_id);

printf("enter the number of pages : ");

scanf("%d",&jobs[i].num_pages);

printf("\n");

for(i=0;i<n;i++){

for(j=i+1;j<n;j++){

if(jobs[i].num_pages>jobs[j].num_pages){

temp=jobs[i].num_pages;

jobs[i].num_pages=jobs[j].num_pages;

jobs[j].num_pages=temp;

temp1=jobs[i].job_id;

jobs[i].job_id=jobs[j].job_id;

jobs[j].job_id=temp1;
}

for(i=0;i<n;i++){

enque(jobs[i].job_id,jobs[i].num_pages);

display();

for(i=0;i<n;i++){

if(count==0){

return 0;

deque();

printf("\nremaining to be process are :");

display();

return 0;

void enque(int jobid,int pages){

struct queue new = (struct queue)malloc(sizeof (struct queue));

if(count==MAX-1){

printf("queue overflow");

return;

else if(front==NULL&&rear==NULL){

new->job_id = jobid;

new->num_pages = pages;

new->next = NULL;

front=new;

rear=new;

count++;
}

else{

new->job_id = jobid;

new->num_pages = pages;

new->next = NULL;

rear->next = new;

rear = new;

count++;

void deque(){

if(count==0){

printf("queue underflow");return;

else{

struct queue *temp2=front;

front = front->next;

free(temp2);

count--;

if(front==NULL){

rear = NULL;

void display(){

printf(" \n ");

if(front==NULL&&rear==NULL&&count==0){

printf(" all completed ");

return;

else{
struct queue *temp3=front;

while(temp3!=NULL){

printf("job id is %d\n ",temp3->job_id);

printf("number of pages are %d \n",temp3->num_pages);

temp3=temp3->next;

return;

Circular Queue using linked list

#include<stdio.h>

#define capacity 6

int queue[capacity];
int front = -1, rear = -1;

// Here we check if the Circular queue is full or not


int checkFull ()
{
if ((front == rear + 1) || (front == 0 && rear == capacity - 1))
{
return 1;
}
return 0;
}

// Here we check if the Circular queue is empty or not


int checkEmpty ()
{
if (front == -1)
{
return 1;
}
return 0;
}

// Addtion in the Circular Queue


void enqueue (int value)
{
if (checkFull ())
printf ("Overflow condition\n");

else
{
if (front == -1)
front = 0;

rear = (rear + 1) % capacity;


queue[rear] = value;
printf ("%d was enqueued to circular queue\n", value);
}
}

// Removal from the Circular Queue


int dequeue ()
{
int variable;
if (checkEmpty ())
{
printf ("Underflow condition\n");
return -1;
}
else
{
variable = queue[front];
if (front == rear)
{
front = rear = -1;
}
else
{
front = (front + 1) % capacity;
}
printf ("%d was dequeued from circular queue\n", variable);
return 1;
}
}

// Display the queue


void print ()
{
int i;
if (checkEmpty ())
printf ("Nothing to dequeue\n");
else
{
printf ("\nThe queue looks like: \n");
for (i = front; i != rear; i = (i + 1) % capacity)
{
printf ("%d ", queue[i]);
}
printf ("%d \n\n", queue[i]);

}
}

int main ()
{
// Not possible as the Circular queue is empty
dequeue ();

enqueue (15);
enqueue (20);
enqueue (25);
enqueue (30);
enqueue (35);

print ();
dequeue ();
dequeue ();

print ();

enqueue (40);
enqueue (45);
enqueue (50);
enqueue (55); //Overflow condition
print ();

return 0;
}

Infix to postfix expression conversion

#include <stdio.h>

#include<ctype.h>

#define max 100

char s[max];

int top = -1;

void push(char element) {

s[++top]=element;

char pop(){

return(s[top--]);

int priority(char element){

switch (element)

case '(':

return 1;

case '+':

case '-':

return 2;

case '*':
case '/':

return 3;

int main(void) {

char infix[50],postfix[50],ch,element;

int i=0,k=0;

printf("-------------------READ THE INFIX-------------------------\n\n");

scanf("%s",infix);

while((ch = infix[i++])!='\0'){

if(ch=='(')

push(ch);

else if(isalnum(ch))

postfix[k++]=ch;

else if(ch==')'){

while(s[top]!='(')

postfix[k++]=pop();

element=pop();

else{

while(priority(s[top])>=priority(ch))

postfix[k++]=pop();

push(ch);

while(top!=-1){

postfix[k++]=pop();

}
postfix[k]='\0';

printf("\n\nGiven Infix Expn: %s Postfix Expn: %s\n", infix, postfix);

return 0;

You might also like