没什么才艺,给大家看看我写的stack和queue吧。
没错,又是我,那个写代码自带字体颜色的头号学霸No.1。
# stack
class stack:
'''
an iterable-type that doesn't support index
first in last out
'''
# create a new stack
def __init__(self, *items):
self.__item = list(items)
self.top = len(self.__item)-1
self.pointer = self.top
# display the stack
def __repr__(self):
if self.top >= 0:
if self.pointer > 0:
self.pointer -= 1
return f"{self.__item[self.pointer]}"
else:
self.pointer = self.top
return f"{self.__item[self.pointer]}"
return 'None'
# add with another stack
def __add__(self, AnotherStack):
return self.__item + AnotherStack.__item
# push items into the stack
def push(self, *item):
if None in item:
raise TypeError('can\'t push None into a stack')
for s in item:
self.__item += [s]
self.top += 1
return self
# delete the last item
def pop(self, thingsnum):
if self.top+1 >= thingsnum:
self.__item = self.__item[self.top+1-thingsnum:]
self.pointer -= thingsnum
return self
raise IndexError('stack index out of range')
# queue
class queue:
'''
an iterable-type that doesn't support index
first in first out
'''
# create a new queue
def __init__(self, *items):
self.__item = list(items)
self.front = 0
self.last = -1
self.pointer = -1
# display the queue
def __repr__(self):
if self.last >= 0:
if self.pointer < self.last:
self.pointer += 1
return f"{self.__item[self.pointer]}"
else:
self.pointer = 0
return f"{self.__item[self.pointer]}"
else:
return 'None'
# add with another queue
def add(self, AnotherQueue):
return self.__item + AnotherQueue.__item
# push items into the queue
def push(self, *things):
if None in things:
raise TypeError('can\'t push None-type items into a queue')
for s in things:
self.__item.append(s)
self.last += len(things)
return self.__item
# delete the last item in the queue
def pop(self, thingsnum):
if self.last+1 >= thingsnum >= 0:
self.__item[0:thingsnum] = []
self.last -= thingsnum
self.pointer = 0
return self
raise IndexError('queue index out of range')
(可能会有一点点bug,后期会修复的)