实现队列
class Queue(object):
def __init__(self):
self._queue=[]
def push(self,data):
self._queue.append(data)
def pop(self):
if self._queue:
peek=self._queue[0]
self._queue=self._queue[1:]
return peek
else:
return None
def front(self):
if self._queue:
return self._queue[0]
else:
return None
def is_empty(self):
return self._queue==[]
def size(self):
return len(self._queue)
扩展:
(1)用两个队列实现一个栈
class Stack(object):
def __init__(self):
self._queue1 = Queue()
self._queue2 = Queue()
def push(self, data):
size1 = self._queue1.size()
size2 = self._queue2.size()
if size1 and size2:
self._queue2.push(self._queue1.pop())
self._queue2.push(data)
elif size1 == 0:
self._queue2.push(data)
elif size2 == 0:
self._queue1.push(data)
def pop(self):
size1 = self._queue1.size()
size2 = self._queue2.size()
while size1 > 1:
self._queue2.push(self._queue1.pop())
size1 -= 1
if size1 == 1:
return self._queue1.pop()
while size2 > 1:
self._queue1.push(self._queue2.pop())
size2 -= 1
if size2 == 1:
return self._queue2.pop()
return None