栈的应用实例

一:三级菜单的文艺青年版

dic = { "河北": { "石家庄": ["鹿泉", "藁城", "元氏"], "邯郸": ["永年", "涉县", "磁县"], }, "河南": { "郑州": ["1", "2", "3"], "平顶山": ["4", "5", "6"] }, "山西": { "A": ["11", "22", "33"], "C": ["44", "55", "66"] } } layer_list=[] current=dic while True: for i in current: print(i) choice=input('==>') if choice in current: layer_list.append(current) current=current[choice] elif choice=='q': current=layer_list[-1] layer_list.pop() else: print('错误!请重新输入!')

二.

fields_list=fields.split('|')
d={}
l=[0]
while data:
    for key in data:
        if key in fields_list:
            d[key]=data[key]
        if type(data[key])==dict:
            l.append(data[key])
    data=l.pop()
print(d)

  

  递归的解法:

l='fld2|fld3|fld7|fld19'.split('|')
result={}
def foo(dic,lst):
    for i in dic :
        if i in lst:
            result[i]=dic[i]
        if type(dic[i])==dict:
            foo(dic[i],lst)
foo(data,l)
print(result)

  如此简单!

单论这两个例子,采用栈的方法,有一些共同点:

  1 题目特点

    情况能无线套下去。无穷无尽

  2 解题思路

    1 有一个空列表,存储数据。

    2 一定有一个不变的变量名,每循环一次,变量名内的数据就会变动,往空列表中追加。

    3 这个变量名可能开始就要赋值,直接用最初的字典赋值,拿来用。目前这两个题是这样的,而且都是字典。

    4 一定有列表的pop代码。

原文地址:https://www.cnblogs.com/654321cc/p/7400846.html