Skip to content

Instantly share code, notes, and snippets.

@arlm
Last active September 11, 2020 17:18
Show Gist options
  • Save arlm/7d573c53c599d647b7f095f18d1befc9 to your computer and use it in GitHub Desktop.
Save arlm/7d573c53c599d647b7f095f18d1befc9 to your computer and use it in GitHub Desktop.
LinkedList + Stack + Queue
using System;
using System.Collections.Generic;
public class QueueDeque<T>
{
public void Enqueue(T value)
{
throw new NotImplementedException("You need to implement this function.");
}
public T Dequeue()
{
throw new NotImplementedException("You need to implement this function.");
}
}
using Xunit;
public class QueueTests
{
[Fact]
public void Push_and_pop_are_first_in_last_out_order()
{
var deque = new QueueDeque<int>();
deque.Enqueue(10);
deque.Enqueue(20);
Assert.Equal(10, deque.Dequeue());
Assert.Equal(20, deque.Dequeue());
}
[Fact]
public void Push_and_pop_can_handle_multiple_values()
{
var deque = new QueueDeque<int>();
deque.Enqueue(10);
deque.Enqueue(20);
deque.Enqueue(30);
Assert.Equal(10, deque.Dequeue());
Assert.Equal(20, deque.Dequeue());
Assert.Equal(30, deque.Dequeue());
}
[Fact]
public void All_methods_of_manipulating_the_deque_can_be_used_together()
{
var deque = new QueueDeque<int>();
deque.Enqueue(10);
deque.Enqueue(20);
Assert.Equal(10, deque.Dequeue());
deque.Enqueue(30);
Assert.Equal(20, deque.Dequeue());
deque.Enqueue(40);
deque.Enqueue(50);
Assert.Equal(30, deque.Dequeue());
Assert.Equal(40, deque.Dequeue());
Assert.Equal(50, deque.Dequeue());
}
}
using System;
using System.Collections.Generic;
public class StackDeque<T>
{
public void Push(T value)
{
throw new NotImplementedException("You need to implement this function.");
}
public T Pop()
{
throw new NotImplementedException("You need to implement this function.");
}
}
using Xunit;
public class StackTests
{
[Fact]
public void Push_and_pop_are_first_in_last_out_order()
{
var deque = new StackDeque<int>();
deque.Push(10);
deque.Push(20);
Assert.Equal(20, deque.Pop());
Assert.Equal(10, deque.Pop());
}
[Fact]
public void Push_and_pop_can_handle_multiple_values()
{
var deque = new StackDeque<int>();
deque.Push(10);
deque.Push(20);
deque.Push(30);
Assert.Equal(30, deque.Pop());
Assert.Equal(20, deque.Pop());
Assert.Equal(10, deque.Pop());
}
[Fact]
public void All_methods_of_manipulating_the_deque_can_be_used_together()
{
var deque = new StackDeque<int>();
deque.Push(10);
deque.Push(20);
Assert.Equal(20, deque.Pop());
deque.Push(30);
Assert.Equal(30, deque.Pop());
deque.Push(40);
deque.Push(50);
Assert.Equal(50, deque.Pop());
Assert.Equal(40, deque.Pop());
Assert.Equal(10, deque.Pop());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment