2301_81360376 2024-05-22 02:04 采纳率: 80%
浏览 2
已结题

贵溪好u句v好她有那样意难平虎

好好聚你狙击贝贝就OK



class Vertex(object):
    def __init__(self,data):
        self.data = data
        self.FirstArc = None
##########################################################
#类名称:Acr
#类说明:定义图中的一条边
#类释义:包含该边的一个顶点adjacent、与该边相关的信息info和
#        与该边依附于相同顶点的另一条边NextArc
##########################################################
class Arc(object):
    def __init__(self,adjacent):
        self.adjacent = adjacent
        self.info = None
        self.NextArc = None
##################################################################
#类名称:Graph
#类说明:定义一个图
#类释义:包含该图的类型kind(0无向图,1无向网,2有向图,3有向网)、
#        图中的顶点数VertexNum、边或弧的数目ArcNum和邻接表Vertices
##################################################################
class Graph(object):
    def __init__(self,kind):
        self.kind = kind
        self.VertexNum = 0
        self.ArcNum = 0
        self.Vertices = []
    #############################################
    #以邻接表作为存储结构创建有向图或无向图的方法
    #############################################
    def CreateGraph(self):
        #依次输入顶点的值,创建顺序存储结构
        print('请依次输入图中各顶点的值,每个顶点值以回车间隔,并以#作为输入结束符:')
        data = input('->')
        while data != '#':
            vertex = Vertex(data)
            self.Vertices.append(vertex)
            self.VertexNum = self.VertexNum + 1
            data = input('->')
        #依次输入边或弧的两个顶点,并进行定位
        print('请依次输入图中每条边的两个顶点值,两个顶点值以空格作为间隔,每输入一组后进行换行,最终以#结束输入:')
        arc = input('->')
        while arc != '#':
            TailVertex = arc.split()[0]          #边或弧的一个顶点
            HeadVertex = arc.split()[1]            #边或弧的另一个顶点
            TailIndex = self.LocateVertex(TailVertex)
            HeadIndex = self.LocateVertex(HeadVertex)        #定位两个顶点在邻接表中的位置
            #将与输入的两个顶点相关联的边插入到顶点的链表当中
            self.InsertArc(TailIndex,HeadIndex)
            self.ArcNum = self.ArcNum + 1          #边或弧的数目加1
            arc = input('->')
        #创建成功
        print('创建成功!')
    ##################################
    #定位顶点在邻接表中的位置的方法
    ##################################
    def LocateVertex(self,Vertex):
        index = 0
        while self.Vertices[index].data != Vertex and index < len(self.Vertices):
            index = index + 1
        return index
    ##################################
    #将图中的边或弧插入邻接表的方法
    ##################################
    def InsertArc(self,TailIndex,HeadIndex):
        if self.kind == 0:#无向图
            TailArc = Arc(TailIndex)
            HeadArc = Arc(HeadIndex)
            #对TailVertex,插入HeadVertex
            HeadArc.NextArc = self.Vertices[TailIndex].FirstArc     #
            self.Vertices[TailIndex].FirstArc = HeadArc
            #对HeadVertex,插入TailVertex
            TailArc.NextArc = self.Vertices[HeadIndex].FirstArc
            self.Vertices[HeadIndex].FirstArc = TailArc
        elif self.kind == 2:#有向图
            #对TailVertex,插入HeadVertex
            HeadArc = Arc(HeadIndex)
            HeadArc.NextArc = self.Vertices[TailIndex].FirstArc
            self.Vertices[TailIndex].FirstArc = HeadArc
  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-05-22 02:04
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】:从您提供的标题和详细内容来看,您似乎想要解决的问题是关于Python编程中图数据结构的实现,特别是创建图、顶点和边的操作。问题相关标签"[erlang]"可能与您的问题不直接相关,因为Erlang是一种不同的编程语言,通常用于并发编程和分布式系统。

    【问题出现原因】:问题出现的原因可能是因为您在实现图数据结构时遇到了一些逻辑或者语法上的错误。由于您提供的代码是一个Python类的定义,可能的问题包括但不限于:

    1. 类的继承和方法实现不正确。
    2. 输入输出处理不当,例如使用input()函数可能在某些环境中不适用。
    3. 图的边或顶点的插入逻辑有误。

    【问题解决方案】:为了解决您的问题,我将提供一些可能的解决方案:

    1. 确保您的Python环境是最新的,并且可以正常运行。
    2. 检查代码中是否有语法错误,比如缩进错误、括号不匹配等。
    3. 确保input()函数的使用是合适的,如果您在非交互式环境中运行代码,可能需要替换为其他输入方法。
    4. 仔细检查InsertArc方法的逻辑,确保无向图和有向图的边插入逻辑是正确的。

    【提供代码】:由于您提供的代码已经相对完整,我将只提供一些建议性的修改:

    • 确保在CreateGraph方法中正确处理了输入结束符#
    • LocateVertex方法中,如果没有找到顶点,应该抛出一个异常或者返回一个特定的值,以避免索引越界。

    【代码运行方式】:运行您的代码需要一个Python环境(推荐Python 3.x)。您可以将代码保存为.py文件,然后在命令行或IDE中运行。

    【代码预期运行结果】:

    请依次输入图中各顶点的值,每个顶点值以回车间隔,并以#作为输入结束符:
    ->
    顶点1
    顶点2
    顶点3
    #
    请依次输入图中每条边的两个顶点值,两个顶点值以空格作为间隔,每输入一组后进行换行,最终以#结束输入:
    ->
    顶点1 顶点2
    顶点2 顶点3
    #
    创建成功!
    

    注意:实际运行结果将取决于您输入的具体顶点和边。

    【推荐相关链接】:

    1. Python 图数据结构教程
    2. Python 面向对象编程
    3. Python 异常处理

    请注意,以上链接可能需要根据您所在的地区和网络环境进行访问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?