MIT6_0002F16_ProblemSet2

MIT6_0002F16_ProblemSet2

实验内容:

本次实验主要围绕如何最快地走MIT进行,包括构造一些图相关的类以及实现相关的函数。主要考察递归、类、文件等方面的知识。

实验流程:

阅读实验pdf,可知实验具体要求,按照要求一步一步解决。

Problem 1: Creating the Data Structure Representation

在这一部分,主要让我们完善两个类:WeightedEdge类 以及 Digraph类,分别用来存储带权边和图。其中WeightedEdge是Edge的子类。需要注意的是这里用到 重写类的 "__ str __"函数,可以实现一个类到str的转换,之后便可以调用print或者str等调用该类

代码如下:

class WeightedEdge(Edge):
    #初始化
    def __init__(self, src, dest, total_distance, outdoor_distance):
        Edge.__init__(self,src,dest)
        self.total_distance = total_distance
        self.outdoor_distance = outdoor_distance
  #以一种安全地方式放回distance
    def get_total_distance(self):
        return self.total_distance
#以一种安全的方式返回outdoor_distance
    def get_outdoor_distance(self):
        return self.outdoor_distance
#重写__str__函数,之后便可以实现str的强制类型转换
    def __str__(self):
        return "{}->{} ({}, {})".format(self.src, self.dest, self.total_distance, self.outdoor_distance)

Digraph类只需要补充其中两个成员函数 add_node以及add_edge即可:

#将一个点加入到图中,如果该点已经在图中,返回ValueError,否则加入
	def add_node(self, node):
        if self.has_node(node):
            raise ValueError
        else:
            self.nodes.add(node)
            self.edges[node] = []
#将一个边加入图中,如果该边对应的点不在图中,则返回ValueError,否则将其加入
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值