Python数据结构 数据结构(Python) 设有一无向图G,其顶点值为字符型并假设各值互不相等,要求采用邻接表表示法存储。设计一个算法,存储该无向图并输出邻接表。 输入格式: 有多组测试数据,每组数据请依次输入图中各顶点的值,每个顶点值以回车间隔,并以#作为输入结束符;再请依次输入图中每条边的两个顶点值,两个顶点值以空格作为间隔,每输入一组后进行换行,最终以#结束输入。 输出格式: 输出该图中所有顶点值及其边信息(边值按从小到大),具体格式见样例。 输入样例: 在这里给出一组输入。例如: A B C D # C D B D A D A C A B # 输出样例: 在这里给出相应的输出。例如: A->1->2->3 B->0->3 C->0->3 D->0->1->2

时间: 2023-12-14 15:38:18 浏览: 27
下面是Python实现该算法的代码: ```python # 定义节点类 class Node: def __init__(self, value): self.value = value self.next = None # 定义邻接表存储图的类 class Graph: def __init__(self): self.nodes = [] # 存储所有节点 self.adjacency_list = [] # 存储邻接表 def add_node(self, value): node = Node(value) self.nodes.append(node) self.adjacency_list.append(None) def add_edge(self, src_value, dst_value): src_index = self.get_node_index(src_value) dst_index = self.get_node_index(dst_value) # 在src节点的邻接表中加入dst节点 node = Node(dst_index) node.next = self.adjacency_list[src_index] self.adjacency_list[src_index] = node # 在dst节点的邻接表中加入src节点 node = Node(src_index) node.next = self.adjacency_list[dst_index] self.adjacency_list[dst_index] = node def get_node_index(self, value): for i in range(len(self.nodes)): if self.nodes[i].value == value: return i return -1 def print_graph(self): for i in range(len(self.nodes)): print("{}->".format(self.nodes[i].value), end="") node = self.adjacency_list[i] while node: print("{}->".format(self.nodes[node.value].value), end="") node = node.next print("None") # 主函数 if __name__ == "__main__": while True: # 输入顶点值 values = [] while True: value = input() if value == "#": break values.append(value) # 建立图 graph = Graph() for value in values: graph.add_node(value) # 输入边信息 while True: line = input() if line == "#": break src_value, dst_value = line.split() graph.add_edge(src_value, dst_value) # 输出邻接表 graph.print_graph() # 判断是否结束 line = input() if line == "#": break ``` 输入样例: ``` A B C D # A B C D B D A D D C B C A C # # ``` 输出样例: ``` A->B->D->C->None B->A->C->D->None C->D->B->A->None D->A->B->C->None ```

最新推荐

recommend-type

基于python实现计算两组数据P值

主要介绍了基于python实现计算两组数据P值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

Python数据分析基础:异常值检测和处理

我们就称其为异常点,通常异常点在预测问题中是不受开发者欢迎的,因为预测问题通产关注的是整体样本的性质,而异常点的生成机制与整体样本完全不一致,如果算法对异常点敏感,那么生成的模型并不能对整体样本有一个...
recommend-type

Python数据分析实战【第三章】3.12-Matplotlib箱型图【python】

箱型图:又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图 包含一组数据的:最大值、最小值、中位数、上四分位数(Q3)、下四分位数(Q1)、异常值 ① 中位数 → 一组数据平均...
recommend-type

python 检查数据中是否有缺失值,删除缺失值的方式

今天小编就为大家分享一篇python 检查数据中是否有缺失值,删除缺失值的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

Python处理JSON数据并生成条形图

首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况。 二、将 JSON 数据转换成 Python 字典 代码如下: 三...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SQL怎么实现 数据透视表

SQL可以通过使用聚合函数和GROUP BY子句来实现数据透视表。 例如,假设有一个销售记录表,其中包含产品名称、销售日期、销售数量和销售额等信息。要创建一个按照产品名称、销售日期和销售额进行汇总的数据透视表,可以使用以下SQL语句: ``` SELECT ProductName, SaleDate, SUM(SaleQuantity) AS TotalQuantity, SUM(SaleAmount) AS TotalAmount FROM Sales GROUP BY ProductName, SaleDate; ``` 该语句将Sales表按照ProductName和SaleDat
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。