社区首页 >问答首页 >检查两个节点链,计算是否有相同的数据

检查两个节点链,计算是否有相同的数据
EN

Stack Overflow用户
提问于 2021-07-21 13:09:52
回答 2查看 20关注 0票数 2

我有一个函数,它检查给定的两个节点链,并确定这两个节点链是否以相同的顺序包含相同的数据值。函数返回True,否则返回False。我需要使用递归来编写这个函数。

这是我的尝试:

代码语言:javascript
代码运行次数:0
复制
def check_chains(chain1, chain2):
    if chain1 is None or chain2 is None:
        return False
    else:
        if chain1.get_data() == chain2.get_data():
            check_chains(chain1.get_next(), chain2.get_next())
            return True
        else:
            return False

即使节点链中有不同的数据值,这个函数也会返回True。

下面是一些测试用例:

代码语言:javascript
代码运行次数:0
复制
1. Test case 1 (test passed)

    chain1 = N.node(5 ,N.node(10,N.node(-15, N.node(1))))
    chain2 = N.node(5 ,N.node(10,N.node(-15, N.node(1))))
    expected = True
    
    result = a7q8.check_chains(chain1, chain2)
    
    if result!=expected:
        print('Test failed')

2. test 2 (test failed, expected false but returned True)

    chain1 = N.node(5 ,N.node(10,N.node(-15, N.node(1))))
    chain2 = N.node(5 ,N.node(10,N.node(7, N.node(1))))
    expected = True
    
    result = a7q8.check_chains(chain1, chain2)
    
    if result!=expected:
        print('Test failed')
EN

回答 2

Stack Overflow用户

发布于 2021-07-21 13:14:21

你的逻辑在两个地方有一点缺陷:

代码语言:javascript
代码运行次数:0
复制
def check_chains(chain1, chain2):
    # base case for equality was missing!
    if chain1 is chain2 is None:  
        return True
    if None in (chain1, chain2):  # rewrote your condition less verbosely
        return False
    if chain1.get_data() == chain2.get_data():
        # recursive result was never used!
        return check_chains(chain1.get_next(), chain2.get_next())
    return False

我还删除了一些虚假的else,因为您从每个if-block返回。

票数 1
EN

Stack Overflow用户

发布于 2021-07-21 13:17:26

代码语言:javascript
代码运行次数:0
复制
def check_chains(chain1, chain2):
    if chain1 is None and chain2 is None:
        return True
    if chain1 is None or chain2 is None:
        return False
    else:
        if chain1.get_data() == chain2.get_data():
            return check_chains(chain1.get_next(), chain2.get_next())
            
        else:
            return False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68470108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档