新崗位需要用python,之前沒寫過python,用循環(huán)數(shù)組實現(xiàn)一個定長隊列玩一下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class CirArray:
readind = 0
writeind = 0
fullFlag = False
emptyFlag = True
def __init__(self, queneSize):
if isinstance(queneSize, int) and queneSize >0:
self.MAX_SIZE = queneSize
self.DataSet = [0 for n in range(self.MAX_SIZE)]
else:
raise Exception('queneSize is invalid');
def CirPop(self):
if self.emptyFlag:
print 'quene is empty and get failed'
print "the quene is:",self.DataSet
return False
self.readind = (self.readind + 1)%self.MAX_SIZE
print "pop value: ",self.DataSet[self.readind]
self.DataSet[self.readind] = 0
if self.writeind == self.readind:
self.emptyFlag = True
print 'quene is empty'
print "the quene is:",self.DataSet
def CirPush(self, num):
if self.fullFlag:
print 'quene is full and insert failed'
print "the quene is:",self.DataSet
return False
self.writeind = (self.writeind + 1)%self.MAX_SIZE
self.DataSet[self.writeind] = num
print "push success:",num
if self.emptyFlag:
self.emptyFlag = False
if self.writeind == self.readind:
self.fullFlag = True
print 'quene is full'
print "the quene is:",self.DataSet
testArr = CirArray(10)
testArr.CirPush(1)
testArr.CirPush(3)
testArr.CirPop()
想說一下:
1筛圆、python類中使用成員變量寫self好麻煩,簡直趕上php的$了
2诚欠、后面可以改進成用動態(tài)數(shù)組實現(xiàn)不定長隊列
3顽染、只有pop和push函數(shù)沒法發(fā)揮底層數(shù)組實現(xiàn)的優(yōu)勢,可以添加隨機訪問的接口
就到這里了轰绵,今后要經(jīng)常寫python了粉寞,先混個臉熟唄