队列
是一种先进先出(First In First Out,简称FIFO)的线性表。只允许在表的一段进行插入,而在另一端进行删除。
a=[]
while True:
bh=int(input("请输入编号"))
if bh==1:
data=input("请输入入队数据")
a.append(data)
elif bh==2:
if len(a)<1:
print("空队列")
else:
data=a[0]
del a[0]
print(data,"出队")
elif bh==3:
print(a)
else:
break
栈
是限制在表 的一端进行插入和删除操作的线性表。又称为后进先出(Last In First Out 简称LIFO)或先进后出(First In Last Out 简称 FILO)
class Stack():
def __init__(self):
self.top=-1#栈顶
self.sList=[]
def inStack(self):
d=int(input("请输入入栈数据"))
self.top+=1
self.sList.append(d)
def outStack(self):
if self.top==-1:
print("空栈")
else:
d=self.sList[self.top]
del self.sList[self.top]
self.top-=1
print(d)
def printStack(self):
print(self.sList)
s=Stack()
while True:
bh=int(input("请输入编号"))
if bh==1:
s.inStack()
elif bh==2:
s.outStack()
elif bh==3:
s.printStack()
elif bh==0:
break
#数据结构 1、线性表 栈
class Stack():
def __init__(self):
self.top=-1#栈顶
self.sList=[]
def inStack(self):
d=int(input("请输入入栈数据"))
self.top+=1
self.sList.append(d)
def outStack(self):
if self.top==-1:
print("空栈")
else:
d=self.sList[self.top]
del self.sList[self.top]
self.top-=1
print(d)
def printStack(self):
print(self.sList)
s=Stack()
while True:
bh=int(input("请输入编号"))
if bh==1:
s.inStack()
elif bh==2:
s.outStack()
elif bh==3:
s.printStack()
elif bh==0:
break
栈的应用括号匹配
class Stack():
def __init__(self):
self.top=-1#栈顶
self.sList=[]
def inStack(self,data):
self.top+=1
self.sList.append(data)
def outStack(self):
if self.top==-1:
return -1
else:
d=self.sList[self.top]
del self.sList[self.top]
self.top-=1
return d
def length(self):
return self.top+1
zfc=input("请输入括号字符串:")
s=Stack()
pipei=True
for zm in zfc:
if zm=="(" or zm=="{" or zm=="[":
s.inStack(zm)
elif zm==")":
d=s.outStack()
if d==-1:
print("缺少",zm,"匹配的左括号 (")
pipei=False
break
elif d!="(":
print("括号不匹配",zm,d)
pipei=False
break
elif zm == "]":
d = s.outStack()
if d == -1:
print("缺少", zm, "匹配的左括号 [")
pipei = False
break
elif d != "[":
print("括号不匹配", zm, d)
pipei = False
break
elif zm == "}":
d = s.outStack()
if d == -1:
print("缺少", zm, "匹配的左括号 {")
pipei = False
break
elif d != "{":
print("括号不匹配", zm, d)
pipei = False
break
if pipei==True:
if s.length()!=0:
print("左括号多了")
else:
print("正常")
#栈的应用进制转换(十进制转二进制)
class Stack():
def __init__(self):
self.top=-1#栈顶
self.sList=[]
def inStack(self,data):
self.top+=1
self.sList.append(data)
def outStack(self):
d=self.sList[self.top]
del self.sList[self.top]
self.top-=1
return d
def length(self):
return self.top+1
s=Stack()
d=int(input("请输入一个数"))
while d>0:
ys=d%2
s.inStack(ys)
d=d//2
while s.length()>0:
print(s.outStack(),end="")