栈和队列
栈的结构特点:
先进后出,后进先出。
进口和出口相同。
队列结构特点:
先进先出。
对于普通队列,其入口和出口不同,而对于双端队列,则可以在两端实现 入队列 和 出队列。
还有一种阻塞队列,即执行入队和出队操作时,需要考虑 队列状态,比如 队列长度达到其容纳极限,此时无法执行入队操作,那么 入队这个操作会被 阻塞,直到队列有 空间可用。
数据结构的代码实现
实现语言为python,实现的数据结构包括 栈、普通队列和双端队列。
栈的实现:
class stacks(object):
def __init__(self):
self.__items = []
def empty(self):
if self.__items == []:
return True
else:
return False
def length(self):
return len(self.__items)
def push(self, item):
self.__items.append(item)
def pop(self):
if self.empty():
return
self.__items.pop()
def sumit(self):
if self.empty():
return
return self.__items[-1]
def iters(self):
if self.empty():
return
for i in self.__items[::-1]:
print(i, end=' ')
print('')
普通队列的实现:
class queues(object):
def __init__(self):
self.__items = []
def empty(self):
if self.__items == []:
return True
else:
return False
def length(self):
return len(self.__items)
def push(self, item):
self.__items.append(item)
def pop(self):
if self.empty():
return
self.__items.pop(0)
def iters(self):
if self.empty():
return
for i in self.__items:
print(i, end=' ')
print('')
双端队列的实现:
class deques(object):
def __init__(self):
self.__items = []
def empty(self):
if self.__items == []:
return True
else:
return False
def length(self):
return len(self.__items)
def rpush(self, item):
self.__items.append(item)
def lpush(self, item):
self.__items.insert(0,item)
def lpop(self):
if self.empty():
return
self.__items.pop(0)
def rpop(self):
if self.empty():
return
self.__items.pop()
def iters(self):
if self.empty():
return
for i in self.__items:
print(i, end=' ')
print('')