Introduction to Practice Problems in C#

Introduction to Practice Problems

Welcome to the practical segment of our C# programming journey! Today, we'll apply the knowledge from past lessons to solve two practice problems using advanced C# data structures: queues, deques, and sorted dictionaries with custom class keys.

First Practice Problem: Implementing Queues with Deques

Consider an event-driven system, like a restaurant. Orders arrive, and they must be handled in the order they were received, following the First In, First Out (FIFO) principle. This principle makes it a perfect scenario for a queue or deque implementation in C#.

using System;
using System.Collections.Generic;

class Queue
{
    private LinkedList<string> buffer;

    public Queue()
    {
        // Initializing an empty queue
        buffer = new LinkedList<string>();
    }

    // Adding (enqueueing) an item to the queue
    public void Enqueue(string val)
    {
        buffer.AddLast(val);
    }

    // Removing (dequeuing) an item from the queue
    public string Dequeue()
    {
        if (IsEmpty())
        {
            throw new InvalidOperationException("Queue is empty");
        }
        string value = buffer.First.Value;
        buffer.RemoveFirst();
        return value;
    }

    // Checking if the queue is empty
    public bool IsEmpty()
    {
        return buffer.Count == 0;
    }

    // Checking the size (number of items) in the queue
    public int Size()
    {
        return buffer.Count;
    }

    public static void Main(string[] args)
    {
        Queue restaurantQueue = new Queue();

        restaurantQueue.Enqueue("Order 1");
        restaurantQueue.Enqueue("Order 2");

        Console.WriteLine("Dequeued: " + restaurantQueue.Dequeue());
        Console.WriteLine("Dequeued: " + restaurantQueue.Dequeue());
    }
}

This code demonstrates the creation and operation of a Queue class, which leverages LinkedList<T> to efficiently implement a queue. The Queue class includes methods to Enqueue (add) an item, Dequeue (remove) an item, check if the queue is empty, and return the queue's size. Enqueue operations add an item to the end of the deque (simulating the arrival of a new order), while dequeue operations remove an item from the front (simulating the serving of an order), maintaining the First In, First Out (FIFO) principle.

Analyzing the First Problem Solution

Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal