coinor.blimpy.Stack module

A basic stack implementation using a linked list.

Source code
'''
A basic stack implementation using a linked list.
'''
from __future__ import print_function
from __future__ import absolute_import
from builtins import range
from builtins import object

__version__    = '1.1.0'
__author__     = 'Aykut Bulut, Ted Ralphs ([email protected],[email protected])'
__license__    = 'BSD'
__maintainer__ = 'Aykut Bulut'
__email__      = '[email protected]'
__url__        = None
__title__      = 'Stack data structure'

from .LinkedList import LinkedList

class Stack(object):
    '''
    This stack class is built on top of a linked list data structure.
    '''
    def __init__(self):
        self.items = LinkedList()

    def isEmpty(self):
        return len(self.items) == 0

    def push(self, item):
        self.items.append(item)

    def pop(self, item = None):
        if item == None:
            return self.items.pop()
        else:
            self.items.remove(item)
            return item

    def remove(self, item):
        self.items.remove(item)

    def peek(self, item = None):
        if item == None:
            return self.items[len(self.items)-1]
        else:
            for i in self.items:
                if i == item:
                    return i
        return None

    def size(self):
        return len(self.items)
    
    def __repr__(self):
        return self.items.__repr__()
    
    def __str__(self):
        return self.items.__str__()

if __name__ == '__main__':

    s = Stack()

    for i in range(10):
        s.push((i, 1))

    print(s.pop())

    print(s)

Classes

class Stack

This stack class is built on top of a linked list data structure.

Source code
class Stack(object):
    '''
    This stack class is built on top of a linked list data structure.
    '''
    def __init__(self):
        self.items = LinkedList()

    def isEmpty(self):
        return len(self.items) == 0

    def push(self, item):
        self.items.append(item)

    def pop(self, item = None):
        if item == None:
            return self.items.pop()
        else:
            self.items.remove(item)
            return item

    def remove(self, item):
        self.items.remove(item)

    def peek(self, item = None):
        if item == None:
            return self.items[len(self.items)-1]
        else:
            for i in self.items:
                if i == item:
                    return i
        return None

    def size(self):
        return len(self.items)
    
    def __repr__(self):
        return self.items.__repr__()
    
    def __str__(self):
        return self.items.__str__()

Methods

def __init__(self)

Initialize self. See help(type(self)) for accurate signature.

Source code
def __init__(self):
    self.items = LinkedList()
def isEmpty(self)
Source code
def isEmpty(self):
    return len(self.items) == 0
def peek(self, item=None)
Source code
def peek(self, item = None):
    if item == None:
        return self.items[len(self.items)-1]
    else:
        for i in self.items:
            if i == item:
                return i
    return None
def pop(self, item=None)
Source code
def pop(self, item = None):
    if item == None:
        return self.items.pop()
    else:
        self.items.remove(item)
        return item
def push(self, item)
Source code
def push(self, item):
    self.items.append(item)
def remove(self, item)
Source code
def remove(self, item):
    self.items.remove(item)
def size(self)
Source code
def size(self):
    return len(self.items)