美文网首页
面试算法逻辑题

面试算法逻辑题

作者: 陳_CHEN_陈 | 来源:发表于2018-06-26 16:16 被阅读0次

1、编写程序,编写节点类且有name属性 ,实例化6个节点,A节点和B、C、D有关联,B和E、F有关联,那么编写程序,使得程序从A开始,以三种顺序打印节点名

[if !supportLists](1) [endif]A、B、C、D、E、F

[if !supportLists](2) [endif]F、E、D、C、B、A

[if !supportLists](3) [endif]E、F、B、C、D、A

#-*- encoding:utf-8 -*-

#建立题目中的节点

class Node:

    def __init__(self,name):

        self.name = name

        self.__node_list = []

    def extend_nodes(self,*args):

        self.__node_list.extend(args)

    #添加关联节点

    def add_node(self,node):

        self.__node_list.append(node)

    #当前节点是否有 关联节点

    def is_node_list_empty(self):

        if len(self.__node_list) == 0:

            return True

        else:

            return False

    #返回并删除关联的节点

    def pop_first_one_node_in_list(self):

        return self.__node_list.pop(0)

    #返回并删除关联的节点,从列表后面开始

    def pop_last_one_node_in_list(self):

        return self.__node_list.pop()

    def show_node_list(self):

        for node in self.__node_list:

            print node

    def __str__(self):

        return "node:%s"%self.name

node_a = Node("A")

node_b = Node("B")

node_c = Node("C")

node_d = Node("D")

node_e = Node("E")

node_f = Node("F")

node_a.extend_nodes(node_b,node_c,node_d)

# node_a.show_node_list()

node_b.extend_nodes(node_e,node_f)

# node_b.show_node_list()

def travel_1(node):

    #队列

    queue = []

    queue.append(node)

    while queue:

        e = queue.pop(0)

        print e

        while not e.is_node_list_empty():

            queue.append(e.pop_first_one_node_in_list())

def travel_2(node):

    queue = []

    result = []

    queue.append(node)

    while queue:

        e = queue.pop(0)

        result.insert(0,e)

        while not e.is_node_list_empty():

            queue.append(e.pop_first_one_node_in_list())

    for node in result:

        print node

def travel_3(node):

    stack = []

    stack.append(node)

    while stack:

        e = stack[-1]

        if not e.is_node_list_empty():

            new_node = e.pop_first_one_node_in_list()

            stack.append(new_node)

        else:

            print stack.pop()

# travel_1(node_a)

# travel_2(node_a)

travel_3(node_a)

相关文章

  • 面试算法逻辑题

    1、编写程序,编写节点类且有name属性 ,实例化6个节点,A节点和B、C、D有关联,B和E、F有关联,那么编写程...

  • BD1 - Java 1-4 周五总结

    上午小组总结: 关于收获: 面试时考查: Java基础 逻辑思维 读代码能力 写代码能力(编程题) 算法题 学习过...

  • 面试题高频算法题整理

    以下算法题几乎都是简单题,都为面试算法题值得刷的题,需要理解并记住解题思路,而其中★标注的题,更是面试算法题中的高...

  • BD1 - Java 1-1

    面试时考查:Java基础逻辑思维读代码能力写代码能力(编程题)算法题 学习过程中 要从网上找题刷题!再看公司的需求...

  • 这份30天在GitHub获得47k+星,多次登上榜首的算法宝典,

    前言 现在几乎所有大厂的软件岗位面试都会有算法题的面试,那么该如何准备算法面试呢? 什么是算法面试? 算法面试只是...

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

  • 判断一个字符串是否是Ip地址

    面试的一道算法题

  • C++ 学习之(一):面试中的算法和准备过程

    面试中的算法和准备过程 从一道入门题说起 为什么要学习算法 如何准备面试算法 代码风格 了解算法面试的模板 常用工...

  • 面试逻辑题

    叔叔来家做客,哥哥妹妹问叔叔生日,叔叔说是1989年,然后将月份告诉哥哥,日子告诉妹妹,最后说是下面的其中一个:1...

  • 面试逻辑题

    1,11,21,1211,111221,下一个数是什么?(解释) 312211解释 : 后面的对前面的解释,然后把...

网友评论

      本文标题:面试算法逻辑题

      本文链接:https://www.haomeiwen.com/subject/xtogsftx.html