Challenge: Implementing a Generic Class
Swipe to show menu
You can clone the base code from the GithHub Repository.
A stack is a special kind of data structure which stores data according to the Last In, First Out (LIFO) principle. A stack has two main methods, namely, Push and Pop. The Push adds a new element to the stack, and Pop removes the most recently added element from the stack. You can imagine it like a stack of books, or any other item. By using Push you add a new item on the top, and by using Pop you remove the item at the top. This is the LIFO principle.
The program contains a class which implements the Stack data structure, however, it only supports integers. Make changes in the class code so that it is able to support any data type.
The syntax for creating a generic class is class className<T1, T2, …> { /* class code here */ }.
namespace ConsoleApp
{
internal class Program
{
public class Stack<T>
{
private List<T> items;
public Stack()
{
items = new List<T>();
}
public void Push(T item)
{
items.Add(item);
}
public T Pop()
{
if (items.Count == 0)
throw new InvalidOperationException("Stack is empty");
T poppedItem = items[items.Count - 1];
items.RemoveAt(items.Count - 1);
return poppedItem;
}
// Gets the last element, without removing it
public T Peek()
{
if (items.Count == 0)
{
throw new InvalidOperationException("Stack is empty");
}
return items[items.Count - 1];
}
public int Count
{
get { return items.Count; }
}
public bool IsEmpty
{
get { return items.Count == 0; }
}
}
static void Main(string[] args)
{
Stack<string> s1 = new Stack<string>();
s1.Push("a");
s1.Push("b");
s1.Push("c");
Console.WriteLine(s1.Pop());
Console.WriteLine(s1.Pop());
Console.WriteLine(s1.Pop());
}
}
}
Thanks for your feedback!
Ask AI
Ask AI
Ask anything or try one of the suggested questions to begin our chat