‹ ›
XmonoCodes • Learn / Build / Grow

CREATIVITY
MEETS CODE.

Practical knowledge for students, developers and curious builders — from programming and web development to projects, notes and real-world problem solving.

  • “Learn something useful every day.”
  • “Build ideas into real projects.”
  • “Understand the why, not just the how.”
  • “Keep experimenting. Keep improving.”

Latest from XmonoCodes

Explore tutorials, notes, projects, syllabus material and practical coding content.

Monday, February 24, 2025

Enqueue and dequeue in queue

 #include <stdio.h>

#include <stdlib.h>


#define MAX 100


int queue[MAX];

int front = -1, rear = -1;


void enqueue(int value) {

    if (rear == MAX - 1) {

        printf("Queue Overflow\n");

        return;

    }

    if (front == -1) {

        front = 0;

    }

    queue[++rear] = value;

}


int dequeue() {

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

        printf("Queue Underflow\n");

        return -1;

    }

    return queue[front++];

}


int main() {

    enqueue(10);

    enqueue(20);

    enqueue(30);


    printf("%d dequeued from queue\n", dequeue());

    printf("%d dequeued from queue\n", dequeue());

    printf("%d dequeued from queue\n", dequeue());


    return 0;

}

Insert at beginning in Linked list

 #include <stdio.h>

#include <stdlib.h>


struct Node {

    int data;

    struct Node* next;

};


void insertAtBeginning(struct Node** head, int value) {

    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));

    newNode->data = value;

    newNode->next = *head;

    *head = newNode;

}


void printList(struct Node* head) {

    while (head != NULL) {

        printf("%d -> ", head->data);

        head = head->next;

    }

    printf("NULL\n");

}


int main() {

    struct Node* head = NULL;


    insertAtBeginning(&head, 10);

    insertAtBeginning(&head, 20);

    insertAtBeginning(&head, 30);


    printList(head);


    return 0;

}

Adding new element in linked list at the end.

 #include <stdio.h>

#include <stdlib.h>


struct Node {

    int data;

    struct Node* next;

};


void insertAtEnd(struct Node** head, int value) {

    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));

    newNode->data = value;

    newNode->next = NULL;


    if (*head == NULL) {

        *head = newNode;

        return;

    }


    struct Node* temp = *head;

    while (temp->next != NULL) {

        temp = temp->next;

    }

    temp->next = newNode;

}


void printList(struct Node* head) {

    while (head != NULL) {

        printf("%d -> ", head->data);

        head = head->next;

    }

    printf("NULL\n");

}


int main() {

    struct Node* head = NULL;


    insertAtEnd(&head, 10);

    insertAtEnd(&head, 20);

    insertAtEnd(&head, 30);


    printList(head);


    return 0;

}

Push and pop in stack

 #include <stdio.h>

#include <stdlib.h>


#define MAX 100


int stack[MAX];

int top = -1;


void push(int value) {

    if (top >= MAX - 1) {

        printf("Stack Overflow\n");

        return;

    }

    stack[++top] = value;

}


int pop() {

    if (top < 0) {

        printf("Stack Underflow\n");

        return -1;

    }

    return stack[top--];

}


int main() {

    push(10);

    push(20);

    push(30);


    printf("%d popped from stack\n", pop());

    printf("%d popped from stack\n", pop());

    printf("%d popped from stack\n", pop());


    return 0;

}