Pages - Menu

Thursday, 23 May 2019

Queue implemetation in C

HERE IS THE CODE

#include<stdio.h>
#include<stdlib.h>
struct node {
    int data;
    struct node *next;
};
struct node * getNode(int);
void addq(struct node **, struct node **, int);
int delq(struct node **, struct node **);
void main() {
    struct node *front = NULL, *rear = NULL;
    int i, n, data;
    printf("Enter the  number of elements\n");
    scanf("%d", &n);
    printf("Enter the elements\n");
    for (i=0;i<n;i++) {
        scanf("%d", &data);
        addq(&front, &rear, data);
    }
    printf("Enter the number of elements to pop\n");
    scanf("%d", &n);
    for (i=0;i<n;i++) {
        printf("element deleted - %d\n", delq(&front, &rear));
    }
}

int delq(struct node **front, struct node **rear) {
    int data;
    struct node *temp;
    if (*front == NULL) {
        printf("Underflow\n");
        return -1;
    }
    if (*rear == *front) {
        data = (*front) -> data;
        free(*front);
        *front = *rear = NULL;
        return data;
    } else {
        data = (*front) -> data;
        temp = *front;
        *front =  (*front) -> next;
        free(temp);
        return data;
    }
}

void addq(struct node **front, struct node **rear, int data) {
    struct node *temp;
    if (*front == NULL) {
        *rear = *front = getNode(data);
    } else {
        temp = *front;
        while (temp -> next != NULL) {
            temp = temp -> next;
        }
        temp -> next = getNode(data);
        *rear = temp -> next;
    }
}

struct node* getNode(int data) {
    struct node *temp = (struct node *)malloc(sizeof(struct node));
    temp -> data = data;
    temp -> next = NULL;
    return temp;
} 

No comments:

Post a Comment