zoukankan      html  css  js  c++  java
  • 栈的应用实例

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

    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代码。

  • 相关阅读:
    Promise
    ajax基础
    flex布局的盒子模型
    css3核心模块
    响应式开发
    HTML5标签及表单
    JS面向对象编程
    JS面向对象的编程
    ES5构造函数与ES6类
    类欧几里得算法
  • 原文地址:https://www.cnblogs.com/654321cc/p/7400846.html
Copyright © 2011-2022 走看看