1.堆栈:
class Stack(object):
def __init__(self):
self.stack = []
self.top = -1
#压入
def push(self,value):
self.top += 1
self.stack.append(value)
#判断堆栈是否为空:
def stack_empty(self):
if self.top < 0:
return True
else: return False
#弹出
def pop(self):
if self.stack_empty():
print('堆栈下溢!')
else:
self.top -= 1
return self.stack.pop()
def __call__(self):
print(self.stack)
s = Stack()
s.push(1)
print(s.pop())
print(s.pop())
s.push(1)
s.push(2)
s.push('3')
s()
2.队列:
class Queue(object):
def __init__(self,n):
self.length = n
self.queue = [None]*n
#定义队列的队头和队尾
self.head, self.tail = 0, 0
#上溢判断
def overflow(self):
if self.queue[self.tail] != None:
return True
else: return False
#下溢判断
def underflow(self):
if self.queue[self.head] == None:
return True
else: return False
#入队
def enqueue(self,value):
if self.overflow():
print('队列上溢!')
else:
self.queue[self.tail] = value
if self.tail == self.length - 1:
self.tail = 0
else:
self.tail += 1
#出队
def dequeue(self):
if self.underflow():
print('队列下溢!')
else:
x = self.queue[self.head]
self.queue[self.head] = None
if self.head == self.length - 1:
self.head = 0
else:
self.head += 1
return x
def __call__(self):
print(self.queue)
q = Queue(3)
q.enqueue('1')
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
q()
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())