python实现stack 和 queue
代码:
#!/usr/bin/python
class queue:
def __init__(self,size = 20):
self.size = size
self.queue = []
self.end = -1
def setsize(self,size):
self.size = size
def In(self,n):
if self.end < self.size-1:
self.queue.append(n)
self.end = self.end+1
else:
raise "Queue is full"
def Out(self):
if self.end != -1:
ret = self.queue[0]
self.queue = self.queue[1:]
self.end = self.end-1
return ret
else:
raise "Queue is empty"
def End(self):
return self.end
def empty(self):
self.queue = []
self.end = -1
def getsize(self):
return self.end + 1
if __name__ == "__main__":
q = queue()
for i in xrange(15):
q.In(i)
print q.getsize()
for i in xrange(15):
print q.Out(),
print
q.empty()
print q.getsize()
q.setsize(100)
for i in xrange(30):
try:
q.In(i)
except:
print "Error"
else:
print str(i)+" OK"
#!/usr/bin/env python
class stack:
def __init__(self,size=20):
self.stack = []
self.size = size
self.top = -1
def setsize(self,size):
self.size = size
def push(self,data):
if self.isFull():
raise "stack already full"
else:
self.stack.append(data)
self.top = self.top+1
def pop(self):
if self.isEmpty():
raise "stack is empty"
else:
data = self.stack[-1];
self.top = self.top-1
del self.stack[-1]
return data
def Top(self):
return self.top
def isEmpty(self):
if self.top == -1:
return True
else:
return False
def empty(self):
self.stack = []
self.top = -1
def isFull(self):
if self.top == self.size-1:
return True
else:
return False
if __name__ == '__main__':
st = stack()
for i in xrange(16):
st.push(i)
print st.Top()
print
for i in xrange(16):
print st.pop()
st.empty()
st.setsize(101)
for i in xrange(100):
st.push(i)
for i in xrange(100):
print st.pop(),