1.队列
队列可以做两端增删数据元素
队列中的数据元素遵循'先进先出'的原则,也称为FIFO结构(First In First Out)
从空队列中弹出数据和向满队列中压入数据,均视为错误
class SQueue:
def __init__(self):
self._elem = []
def is_empty(self):
return self._elem == []
def push(self, data):
self._elem.insert(0, data)
def pop(self):
if self.is_empty():
raise IndexError("stack error:试图从空队列中弹出数据")
return self._elem.pop()
if __name__ == "__main__":
myqueue = SQueue()
myqueue.push('aaa')
myqueue.push('bbb')
myqueue.push('ccc')
myqueue.push('ddd')
while not myqueue.is_empty():
print(myqueue.pop())
myqueue.pop()
2.栈
栈限制只能在栈顶进行数据插入和删除操作
栈中数据元素遵循'后进先出'的原则,也称为FILO结构(First In Last Out)
向满栈中压入数据和从空栈中弹出数据,均视为错误
class SStack:
def __init__(self):
self._elem = []
def is_empty(self):
return self._elem == []
def push(self, elem):
self._elem.append(elem)
def pop(self):
if self.is_empty():
raise IndexError("stack error:试图从空栈中弹出数据")
return self._elem.pop()
if __name__ == "__main__":
mystack = SStack()
mystack.push(10)
mystack.push(20)
mystack.push(30)
mystack.push(40)
while not mystack.is_empty():
print(mystack.pop())
mystack.pop()