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