UNPKG

typescript-collections

Version:

A complete, fully tested data structure library written in TypeScript.

85 lines (84 loc) 3.05 kB
import * as util from './util'; export default class Stack<T> { /** * List containing the elements. * @type collections.LinkedList * @private */ private list; /** * Creates an empty Stack. * @class A Stack is a Last-In-First-Out (LIFO) data structure, the last * element added to the stack will be the first one to be removed. This * implementation uses a linked list as a container. * @constructor */ constructor(); /** * Pushes an item onto the top of this stack. * @param {Object} elem the element to be pushed onto this stack. * @return {boolean} true if the element was pushed or false if it is undefined. */ push(elem: T): boolean; /** * Pushes an item onto the top of this stack. * @param {Object} elem the element to be pushed onto this stack. * @return {boolean} true if the element was pushed or false if it is undefined. */ add(elem: T): boolean; /** * Removes the object at the top of this stack and returns that object. * @return {*} the object at the top of this stack or undefined if the * stack is empty. */ pop(): T | undefined; /** * Looks at the object at the top of this stack without removing it from the * stack. * @return {*} the object at the top of this stack or undefined if the * stack is empty. */ peek(): T | undefined; /** * Returns the number of elements in this stack. * @return {number} the number of elements in this stack. */ size(): number; /** * Returns true if this stack contains the specified element. * <p>If the elements inside this stack are * not comparable with the === operator, a custom equals function should be * provided to perform searches, the function must receive two arguments and * return true if they are equal, false otherwise. Example:</p> * * <pre> * const petsAreEqualByName (pet1, pet2) { * return pet1.name === pet2.name; * } * </pre> * @param {Object} elem element to search for. * @param {function(Object,Object):boolean=} equalsFunction optional * function to check if two elements are equal. * @return {boolean} true if this stack contains the specified element, * false otherwise. */ contains(elem: T, equalsFunction?: util.IEqualsFunction<T>): boolean; /** * Checks if this stack is empty. * @return {boolean} true if and only if this stack contains no items; false * otherwise. */ isEmpty(): boolean; /** * Removes all of the elements from this stack. */ clear(): void; /** * Executes the provided function once for each element present in this stack in * LIFO order. * @param {function(Object):*} callback function to execute, it is * invoked with one argument: the element value, to break the iteration you can * optionally return false. */ forEach(callback: util.ILoopFunction<T>): void; }