README.md

December 5, 2022 ยท View on GitHub

Extensible stack implementation

Description

A stack is a LIFO (Last in First out) collection. It can store any kind of data and has the possibility to extend its maximum number of objects.

Comments would be greatly appreciated!

More Info

Push(object)

Pop(void)

Peek(void)

Data stored in the stack

Pop() returns null when the stack is empty so beware.

Submitted On
ByAlexandre Gosselin
LevelIntermediate
User Rating3.0 (9 globes from 3 users)
CompatibilityC#
CategoryData Structures
World.Net (C#, VB.net)
Archive File

Source Code

using System;
namespace MyLibrary.Collections
{
	public class MyStack
	{
		private long nIncrement;
		private long nElements;
		private object[] elements;
		public MyStack(long initialCapacity, long nIncrement)
		{
			this.nElements = 0;
			this.nIncrement = nIncrement;
			elements = new object[initialCapacity];
		}
		public void Push(object element)
		{
			// If needed, extends stack's capacity to store more element.
			if (nElements == elements.Length)
			{
				object[] temp = new object[nElements + nIncrement];
				for (int i=0; i<nElements; i++)
					temp[i] = elements[i];
				elements = temp;
			}
			// Pushes element at the top of the stack.
			elements[nElements] = element;
			nElements++;
		}
		public object Pop()
		{
			if (IsEmpty())
				return null;
			else
			{
				object element = elements[nElements - 1];
				nElements--;
				return element;
			}
		}
		public object Peek()
		{
			if (IsEmpty())
				return null;
			else
				return elements[nElements - 1];
		}
		public bool IsEmpty()
		{
			if (nElements == 0)
				return true;
			else
				return false;
		}
		public long Length
		{
			get
			{
				return nElements;
			}
		}
	}
}