(Python3)数据结构——09.单链表之计算两数之和

前言

  • 有Python基础
  • 有数据结构单链表基础,不清楚的可以参考前面的博客
https://blog.youkuaiyun.com/sf9898/article/details/104946291

问题描述

  • 这是某大厂的面试题,现场写代码的那种。
给出两个非空的链表,用来表示两个非负的整数,他们的位数是按逆序存储的,
并且每一个节点都只能存储一个数字。如果将这两个数相加,则会返回一个新的链表
来表示他们的和。可以假设除了数字0之外,这两个数都不会以0开头。
  • 输入输出这一块划重点,这里的输入输出是比较抽象的,大致意思对了就行,不是牛客网那种格式化输入。
输入(1 -> 6 -> 4)+ (3 -> 1 -> 2)
输出 (4 -> 7 -> 6)
原因是  461+213 = 674

分析及实现

part1.分析与定义

  • 题目要求是用的链表,那么首先先定义链表类。
  • 关于数据的合法性:一般不会为难人,给的都会是合法数据,不用判断负数。也不用纠结要是节点存不是一个数字的情况。输入的都只能是合法的字符。
  • 关于输入,怎么输入就怎么存,也就是说输入也是逆序的。
class Node(object):
    def __init__(self, item):
        self.item = item
        self.next = None


class Link(object):
    def __init__(self):
        self.__head = None
  • 接下来再写几个可能会用到的函数。比如插入和删除等。题目中说位数是按照逆序存储的,那么假设从尾部插入,第一个数进来1,第二次进来6,第三次进来4,那么根据这个想法,得到的链表从头到尾是不是164,是不是符合题意?实际上表示的数是461,实现了逆序存储,因此在插入这一块应该写尾部插入。
    def addBack(self, item):
        node = Node(item)
        if self.__head is None:
            self.__head = node
            ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值