Queue Using Linked List Class

 avatarkaziamir
c_cpp
a month ago
1.4 kB
4
Indexable
Never
#include<bits/stdc++.h>
using namespace std;

typedef struct node{
    int data;
    struct node *next;
}node;

node *frnt=NULL, *rear=NULL, *tofree=NULL, *p = NULL;

void enqueue(int x){
    node *newNode = (node *)malloc(sizeof(node));
    if(newNode!=NULL){
        newNode->data = x;
        newNode->next = NULL;
        if(frnt==NULL && rear==NULL){
            frnt = newNode;
            rear = newNode;
        }
        else{
            rear->next = newNode;
            rear = newNode;
        }
        cout<<"Enqueued data: "<<x<<endl;
    }
    else{
        cout<<"Can't Enqueue"<<endl;
    }

}

void dequeue(){
    if(frnt!=NULL){
        tofree = frnt;
        frnt = frnt->next;
        if(frnt==NULL){
            rear = frnt;
        }
        cout<<"Dequeued Data: "<<tofree->data<<endl;
        free(tofree);
    }
    else{
        cout<<"Queue Empty! Can't Dequeue..."<<endl;
    }
}

void display(){
    p = frnt;
    cout<<"Current Queue: ";
    if(frnt!=NULL){
        while(p!=NULL){
            cout<<p->data<<" ";
            p = p->next;
        }
        cout<<endl;
    }
    else{
        cout<<"Empty!"<<endl;
    }
}

void solution(){
    display();
    for(int i=1;i<=10;i++){
        enqueue(i);
    }
    display();
    for(int i=1;i<=5;i++){
        dequeue();
    }
    display();
    for(int i=1;i<=6;i++){
        dequeue();
    }
    display();

}

int main(){
    solution();
}