class SeqStack ( object ) :
def __init__ ( self, max ) :
self. max = max
self. top = - 1
self. stack = [ None for i in range ( self. max ) ]
def empty ( self) :
return self. top is - 1
def push ( self, val) :
if self. top == self. max - 1 :
raise IndexError( "zym" )
else :
self. top += 1
self. stack[ self. top] = val
def pop ( self) :
if self. empty( ) :
raise IndexError( "zwk" )
else :
cur = self. stack[ self. top]
self. top -= 1
return cur
def peak ( self) :
if self. empty( ) :
raise IndexError( "zwk" )
else :
return self. stack[ self. top]
if __name__ == "__main__" :
s = SeqStack( 8 )
for i in range ( 0 , 5 ) :
s. push( i)
print ( s. peak( ) )
s. pop( )
print ( s. peak( ) )
s. push( 8 )
s. push( 9 )
4
3
class Node ( object ) :
def __init__ ( self, val) :
self. val = val
self. next = None
class LinkedStack ( object ) :
def __init__ ( self) :
self. top = None
def empty ( self) :
return self. top is None
def push ( self, val) :
newNode = Node( val)
newNode. next = self. top
self. top = newNode
def pop ( self) :
if self. empty( ) :
raise IndexError( "zwk" )
else :
temp = self. top
self. top = self. top. next
return temp
def peak ( self) :
if self. empty( ) :
raise IndexError( "zwk" )
else :
return self. top. val
if __name__ == "__main__" :
s = LinkedStack( )
for i in range ( 1 , 5 ) :
s. push( i)
print ( s. peak( ) )
s. pop( )
print ( s. peak( ) )
4
3