交通仿真软件:Aimsun_(13).行人与非机动车仿真

行人与非机动车仿真

行人仿真

行人仿真在交通仿真中是一个重要的组成部分,特别是在城市交通仿真中。Aimsun 提供了强大的行人仿真功能,可以模拟行人流量、行人行为和行人与车辆的交互。本节将详细介绍如何在 Aimsun 中进行行人仿真,包括行人网络的创建、行人流量的设置、行人行为的定义以及行人仿真的运行。

1. 创建行人网络

在 Aimsun 中,行人网络是独立于车辆网络的。创建行人网络需要以下几个步骤:

  1. 定义行人节点

    • 行人节点通常表示行人可以进出的地点,如人行横道、公交站、地铁站等。

    • 在 Aimsun 中,可以通过GNEPedestrianNode类来定义行人节点。

  2. 定义行人路段

    • 行人路段表示行人可以行走的路径,如人行道、楼梯等。

    • 可以通过GNEPedestrianEdge类来定义行人路段。

  3. 定义行人区域

    • 行人区域表示行人可以停留的区域,如公交站候车区、地铁站候车区等。

    • 可以通过GNEPedestrianArea类来定义行人区域。

示例代码
# 导入 Aimsun APIimportaimsun_apiasapi# 创建 Aimsun 项目实例project=api.GNProject()# 创建行人节点defcreate_pedestrian_node(node_id,x,y,node_type):""" 创建行人节点 :param node_id: 节点 ID :param x: 节点的 X 坐标 :param y: 节点的 Y 坐标 :param node_type: 节点类型(如人行横道、公交站等) :return: 行人节点对象 """node=api.GNEPedestrianNode(node_id,x,y,node_type)project.add_pedestrian_node(node)returnnode# 创建行人路段defcreate_pedestrian_edge(edge_id,from_node,to_node,length,lanes):""" 创建行人路段 :param edge_id: 路段 ID :param from_node: 起始节点 :param to_node: 结束节点 :param length: 路段长度 :param lanes: 路段车道数 :return: 行人路段对象 """edge=api.GNEPedestrianEdge(edge_id,from_node,to_node,length,lanes)project.add_pedestrian_edge(edge)returnedge# 创建行人区域defcreate_pedestrian_area(area_id,node,area_type):""" 创建行人区域 :param area_id: 区域 ID :param node: 区域所属的节点 :param area_type: 区域类型(如候车区、休息区等) :return: 行人区域对象 """area=api.GNEPedestrianArea(area_id,node,area_type)project.add_pedestrian_area(area)returnarea# 示例数据node1=create_pedestrian_node("node1",100,200,"crosswalk")node2=create_pedestrian_node("node2",300,200,"bus_stop")edge1=create_pedestrian_edge("edge1",node1,node2,200,1)area1=create_pedestrian_area("area1",node2,"waiting_area")
2. 设置行人流量

行人流量的设置是行人仿真的基础。Aimsun 提供了多种方式来设置行人流量,包括静态流量和动态流量。

  1. 静态流量

    • 静态流量是指在仿真开始前定义好的固定流量。

    • 可以通过GNEPedestrianFlow类来设置静态流量。

  2. 动态流量

    • 动态流量是指在仿真过程中根据某些条件变化的流量。

    • 可以通过GNEPedestrianFlow类结合GNEPedestrianDetector类来动态调整流量。

示例代码
# 设置静态行人流量defset_static_pedestrian_flow(flow_id,from_node,to_node,start_time,end_time,rate):""" 设置静态行人流量 :param flow_id: 流量 ID :param from_node: 起始节点 :param to_node: 结束节点 :param start_time: 流量开始时间 :param end_time: 流量结束时间 :param rate: 流量率(每小时行人数量) :return: 行人流量对象 """flow=api.GNEPedestrianFlow(flow_id,from_node,to_node,start_time,end_time,rate)project.add_pedestrian_flow(flow)returnflow# 设置动态行人流量defset_dynamic_pedestrian_flow(flow_id,from_node,to_node,start_time,end_time,rate,detector_id):""" 设置动态行人流量 :param flow_id: 流量 ID :param from_node: 起始节点 :param to_node: 结束节点 :param start_time: 流量开始时间 :param end_time: 流量结束时间 :param rate: 初始流量率(每小时行人数量) :param detector_id: 检测器 ID :return: 行人流量对象 """detector=api.GNEPedestrianDetector(detector_id,from_node,to_node)project.add_pedestrian_detector(detector)flow=api.GNEPedestrianFlow(flow_id,from_node,to_node,start_time,end_time,rate,detector)project.add_pedestrian_flow(flow)returnflow# 示例数据static_flow=set_static_pedestrian_flow("flow1",node1,node2,0,3600,100)dynamic_flow=set_dynamic_pedestrian_flow("flow2",node1,node2,0,7200,50,"detector1")
3. 定义行人行为

定义行人行为是行人仿真的核心部分。Aimsun 提供了多种行人行为模型,包括基本行为模型、随机行为模型和自定义行为模型。

  1. 基本行为模型

    • 基本行为模型是指行人按照预定的路径和速度行走。

    • 可以通过GNEPedestrianBehavior类来定义基本行为模型。

  2. 随机行为模型

    • 随机行为模型是指行人在行走过程中会随机改变路径和速度。

    • 可以通过GNEPedestrianBehavior类结合随机数生成器来定义随机行为模型。

  3. 自定义行为模型

    • 自定义行为模型是指用户可以根据具体需求定义行人的行为。

    • 可以通过编写脚本来实现自定义行为模型。

示例代码
# 定义基本行人行为defdefine_basic_pedestrian_behavior(behavior_id,speed,path):""" 定义基本行人行为 :param behavior_id: 行为 ID :param speed: 行人速度(m/s) :param path: 行人路径(节点列表) :return: 行为对象 """behavior=api.GNEPedestrianBehavior(behavior_id,speed,path)project.add_pedestrian_behavior(behavior)returnbehavior# 定义随机行人行为defdefine_random_pedestrian_behavior(behavior_id,min_speed,max_speed,path):""" 定义随机行人行为 :param behavior_id: 行为 ID :param min_speed: 最小速度(m/s) :param max_speed: 最大速度(m/s) :param path: 行人路径(节点列表) :return: 行为对象 """behavior=api.GNEPedestrianBehavior(behavior_id,min_speed,max_speed,path,is_random=True)project.add_pedestrian_behavior(behavior)returnbehavior# 定义自定义行人行为defdefine_custom_pedestrian_behavior(behavior_id,custom_logic,path):""" 定义自定义行人行为 :param behavior_id: 行为 ID :param custom_logic: 自定义逻辑(函数) :param path: 行人路径(节点列表) :return: 行为对象 """behavior=api.GNEPedestrianBehavior(behavior_id,custom_logic,path,is_custom=True)project.add_pedestrian_behavior(behavior)returnbehavior# 示例数据path1=[node1,node2]basic_behavior=define_basic_pedestrian_behavior("basic_behavior",1.5,path1)random_behavior=define_random_pedestrian_behavior("random_behavior",1.0,2.0,path1)# 自定义行为逻辑defcustom_behavior_logic(pedestrian,time_step):""" 自定义行人行为逻辑 :param pedestrian: 行人对象 :param time_step: 当前时间步 :return: 新的速度 """iftime_step%100==0:return1.2# 每100秒改变速度else:return1.5custom_behavior=define_custom_pedestrian_behavior("custom_behavior",custom_behavior_logic,path1)
4. 运行行人仿真

运行行人仿真需要设置仿真参数和运行仿真。Aimsun 提供了丰富的仿真参数设置选项,以确保仿真结果的准确性和可靠性。

  1. 设置仿真参数

    • 仿真参数包括仿真时间、仿真步长、仿真模式等。

    • 可以通过GNSimulationParameters类来设置仿真参数。

  2. 运行仿真

    • 运行仿真可以通过GNSimulation类来实现。

    • 可以设置仿真开始和结束时间,以及仿真步长。

示例代码
# 设置仿真参数defset_simulation_parameters(simulation_id,start_time,end_time,step_length,mode):""" 设置仿真参数 :param simulation_id: 仿真 ID :param start_time: 仿真开始时间 :param end_time: 仿真结束时间 :param step_length: 仿真步长(秒) :param mode: 仿真模式(如行人、车辆等) :return: 仿真参数对象 """parameters=api.GNSimulationParameters(simulation_id,start_time,end_time,step_length,mode)project.add_simulation_parameters(parameters)returnparameters# 运行仿真defrun_simulation(simulation_id):""" 运行仿真 :param simulation_id: 仿真 ID """simulation=api.GNSimulation(simulation_id)simulation.run()# 示例数据simulation_params=set_simulation_parameters("simulation1",0,7200,1,"pedestrian")run_simulation("simulation1")

非机动车仿真

非机动车仿真在交通仿真中同样重要,特别是在城市交通中。Aimsun 提供了多种非机动车仿真功能,包括非机动车网络的创建、非机动车流量的设置、非机动车行为的定义以及非机动车仿真的运行。

1. 创建非机动车网络

在 Aimsun 中,非机动车网络是独立于车辆网络和行人网络的。创建非机动车网络需要以下几个步骤:

  1. 定义非机动车节点

    • 非机动车节点通常表示非机动车可以进出的地点,如自行车道、停车场等。

    • 可以通过GNEBicycleNode类来定义非机动车节点。

  2. 定义非机动车路段

    • 非机动车路段表示非机动车可以行驶的路径,如自行车道、人行道等。

    • 可以通过GNEBicycleEdge类来定义非机动车路段。

  3. 定义非机动车区域

    • 非机动车区域表示非机动车可以停留的区域,如停车场、维修站等。

    • 可以通过GNEBicycleArea类来定义非机动车区域。

示例代码
# 创建非机动车节点defcreate_bicycle_node(node_id,x,y,node_type):""" 创建非机动车节点 :param node_id: 节点 ID :param x: 节点的 X 坐标 :param y: 节点的 Y 坐标 :param node_type: 节点类型(如自行车道、停车场等) :return: 非机动车节点对象 """node=api.GNEBicycleNode(node_id,x,y,node_type)project.add_bicycle_node(node)returnnode# 创建非机动车路段defcreate_bicycle_edge(edge_id,from_node,to_node,length,lanes):""" 创建非机动车路段 :param edge_id: 路段 ID :param from_node: 起始节点 :param to_node: 结束节点 :param length: 路段长度 :param lanes: 路段车道数 :return: 非机动车路段对象 """edge=api.GNEBicycleEdge(edge_id,from_node,to_node,length,lanes)project.add_bicycle_edge(edge)returnedge# 创建非机动车区域defcreate_bicycle_area(area_id,node,area_type):""" 创建非机动车区域 :param area_id: 区域 ID :param node: 区域所属的节点 :param area_type: 区域类型(如停车场、维修站等) :return: 非机动车区域对象 """area=api.GNEBicycleArea(area_id,node,area_type)project.add_bicycle_area(area)returnarea# 示例数据b_node1=create_bicycle_node("b_node1",100,200,"bicycle_path")b_node2=create_bicycle_node("b_node2",300,200,"parking_lot")b_edge1=create_bicycle_edge("b_edge1",b_node1,b_node2,200,1)b_area1=create_bicycle_area("b_area1",b_node2,"parking_area")
2. 设置非机动车流量

非机动车流量的设置与行人流量类似,可以是静态的或动态的。

  1. 静态流量

    • 静态流量是指在仿真开始前定义好的固定流量。

    • 可以通过GNEBicycleFlow类来设置静态流量。

  2. 动态流量

    • 动态流量是指在仿真过程中根据某些条件变化的流量。

    • 可以通过GNEBicycleFlow类结合GNEBicycleDetector类来动态调整流量。

示例代码
# 设置静态非机动车流量defset_static_bicycle_flow(flow_id,from_node,to_node,start_time,end_time,rate):""" 设置静态非机动车流量 :param flow_id: 流量 ID :param from_node: 起始节点 :param to_node: 结束节点 :param start_time: 流量开始时间 :param end_time: 流量结束时间 :param rate: 流量率(每小时非机动车数量) :return: 非机动车流量对象 """flow=api.GNEBicycleFlow(flow_id,from_node,to_node,start_time,end_time,rate)project.add_bicycle_flow(flow)returnflow# 设置动态非机动车流量defset_dynamic_bicycle_flow(flow_id,from_node,to_node,start_time,end_time,rate,detector_id):""" 设置动态非机动车流量 :param flow_id: 流量 ID :param from_node: 起始节点 :param to_node: 结束节点 :param start_time: 流量开始时间 :param end_time: 流量结束时间 :param rate: 初始流量率(每小时非机动车数量) :param detector_id: 检测器 ID :return: 非机动车流量对象 """detector=api.GNEBicycleDetector(detector_id,from_node,to_node)project.add_bicycle_detector(detector)flow=api.GNEBicycleFlow(flow_id,from_node,to_node,start_time,end_time,rate,detector)project.add_bicycle_flow(flow)returnflow# 示例数据static_b_flow=set_static_bicycle_flow("b_flow1",b_node1,b_node2,0,3600,50)dynamic_b_flow=set_dynamic_bicycle_flow("b_flow2",b_node1,b_node2,0,7200,30,"b_detector1")
3. 定义非机动车行为

定义非机动车行为是确保仿真准确性的关键。Aimsun 提供了多种非机动车行为模型,包括基本行为模型、随机行为模型和自定义行为模型。

  1. 基本行为模型

    • 基本行为模型是指非机动车按照预定的路径和速度行驶。

    • 可以通过GNEBicycleBehavior类来定义基本行为模型。

  2. 随机行为模型

    • 随机行为模型是指非机动车在行驶过程中会随机改变路径和速度。

    • 可以通过GNEBicycleBehavior类结合随机数生成器来定义随机行为模型。

  3. 自定义行为模型

    • 自定义行为模型是指用户可以根据具体需求定义非机动车的行为。

    • 可以通过编写脚本来实现自定义行为模型。

示例代码
# 定义基本非机动车行为defdefine_basic_bicycle_behavior(behavior_id,speed,path):""" 定义基本非机动车行为 :param behavior_id: 行为 ID :param speed: 非机动车速度(m/s) :param path: 非机动车路径(节点列表) :return: 行为对象 """behavior=api.GNEBicycleBehavior(behavior_id,speed,path)project.add_bicycle_behavior(behavior)returnbehavior# 定义随机非机动车行为defdefine_random_bicycle_behavior(behavior_id,min_speed,max_speed,path):""" 定义随机非机动车行为 :param behavior_id: 行为 ID :param min_speed: 最小速度(m/s) :param max_speed: 最大速度(m/s) :param path: 非机动车路径(节点列表) :return: 行为对象 """behavior=api.GNEBicycleBehavior(behavior_id,min_speed,max_speed,path,is_random=True)project.add_bicycle_behavior(behavior)returnbehavior# 定义自定义非机动车行为defdefine_custom_bicycle_behavior(behavior_id,custom_logic,path):""" 定义自定义非机动车行为 :param behavior_id: 行为 ID :param custom_logic: 自定义逻辑(函数) :param path: 非机动车路径(节点列表) :return: 行为对象 """behavior=api.GNEBicycleBehavior(behavior_id,custom_logic,path,is_custom=True)project.add_bicycle_behavior(behavior)returnbehavior# 示例数据path1=[b_node1,b_node2]basic_b_behavior=define_basic_bicycle_behavior("basic_b_behavior",5.0,path1)random_b_behavior=define_random_bicycle_behavior("random_b_behavior",4.0,6.0,path1)# 自定义行为逻辑defcustom_bicycle_behavior_logic(bicycle,time_step):""" 自定义非机动车行为逻辑 :param bicycle: 非机动车对象 :param time_step: 当前时间步 :return: 新的速度 """iftime_step%100==0:return4.5# 每100秒改变速度else:return5.0custom_b_behavior=define_custom_bicycle_behavior("custom_b_behavior",custom_bicycle_behavior_logic,path1)
4. 运行非机动车仿真

运行非机动车仿真需要设置仿真参数和运行仿真。Aimsun 提供了丰富的仿真参数设置选项,以确保仿真结果的准确性和可靠性。

  1. 设置仿真参数

    • 仿真参数包括仿真时间、仿真步长、仿真模式等。

    • 可以通过GNSimulationParameters类来设置仿真参数。

  2. 运行仿真

    • 运行仿真可以通过GNSimulation类来实现。

    • 可以设置仿真开始和结束时间,以及仿真步长。

示例代码
# 设置仿真参数defset_simulation_parameters(simulation_id,start_time,end_time,step_length,mode):""" 设置仿真参数 :param simulation_id: 仿真 ID :param start_time: 仿真开始时间 :param end_time: 仿真结束时间 :param step_length: 仿真步长(秒) :param mode: 仿真模式(如行人、非机动车等) :return: 仿真参数对象 """parameters=api.GNSimulationParameters(simulation_id,start_time,end_time,step_length,mode)project.add_simulation_parameters(parameters)returnparameters# 运行仿真defrun_simulation(simulation_id):""" 运行仿真 :param simulation_id: 仿真 ID """simulation=api.GNSimulation(simulation_id)simulation.run()# 示例数据b_simulation_params=set_simulation_parameters("b_simulation1",0,7200,1,"bicycle")run_simulation("b_simulation1")

总结

通过以上步骤,我们可以在 Aimsun 中创建和运行行人和非机动车仿真。行人仿真包括行人网络的创建、行人流量的设置、行人行为的定义以及仿真运行。非机动车仿真也包括类似的步骤,但针对非机动车的特点进行了调整。这些功能使得 Aimsun 成为一个强大的交通仿真工具,能够满足各种复杂的交通仿真需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1131500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

致同提示:财政部等九部委联合发布《企业可持续披露准则第1号——气候(试行)》

2025年12月25日,财政部会同生态环境部、外交部、国家发展改革委等九部门联合发布《企业可持续披露准则第1号——气候(试行)》(以下简称《气候准则》),在实施范围和实施要求作出规定之前,由企业自…

SpringBoot 实现任意文件在线预览功能

一 文件在线预览在现代工作与生活环境中,文件共享与查看已经成为日常不可或缺的一部分。不过传统的文件处理方式要求用户下载文件到本地后才能查看,这不仅占用了设备的存储空间,还可能导致文件传播效率低下,甚至存在安全隐患。因此…

【人生分水岭】正复利与负复利重要的都有哪些?你不是缺努力,是缺“复利路径设计

绝大多数人的人生不是被一次决策毁掉的,而是被“长期负复利”慢慢拖垮的。 人生中最大的生存消费就是房子和车,都会越来越便宜,慎买二手。越晚买花得越少。除非必要和真的有钱。 无论是向正或向负,加上时间复利都会成为正或负的参…

扔掉了本地 IDE,开发部署只要 3 分钟。

“在我电脑上明明是好的”,这句话我曾说过无数遍,也听过无数遍。新项目启动要配几天环境,线上出了问题,却发现和本地环境完全对不上。我开始思考一个问题:为什么我们必须依赖一个如此脆弱、不一致的本地开发环境&#…

《P3228 [HNOI2013] 数列》

题目描述小 T 最近在学着买股票,他得到内部消息:F 公司的股票将会疯涨。股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为 N。在疯涨的 K 天中小 T 观察到:除第一天外每天的股价都比前一天高,且…

66.qemu设备树配置

//导出qemu设备树到内核根目录 qemu-system-aarch64 -machine virt -machine dumpdtborigin.dtb //反编译成dts ./scripts/dtc/dtc -I dtb -O dts -o origin.dts origin.dtb//在origin.dts根节点下添加自定义节点 /{quan{#address-cells <1>;#size-cells <1>;com…

一算钱领导就让用BigDecimal ,为什么它可以不丢失精度?

我们都知道在计算钱的时候首选 BigDecimal&#xff0c;因为它不会导致丢失精度的情况&#xff0c;尤其在金融领域&#xff0c;为了保证数据的精度&#xff0c;往往都会使用BigDecimal。本文就来探讨下为什么BigDecimal可以保证精度不丢失。类介绍首先来看一下BigDecimal的类声明…

用这套新工作流,把上线时间从半天压到3分钟

“在我电脑上明明是好的”&#xff0c;这句话我曾说过无数次&#xff0c;也听过无数次。每次上线前&#xff0c;我们团队都要花大量时间在联调和解决各种诡异的环境问题上。我开始反思&#xff1a;我们真正的问题&#xff0c;或许根本不是代码&#xff0c;而是那个看不见、摸不…

【毕业设计】机器学习 基于python深度学习的猫狗表情识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

GB/T 24137-2009 木塑装饰板检测

木塑装饰板是指室内外装饰用非结构型木塑复合板材。主要有墙板、壁板和天花等&#xff1b;以木塑复合板为基材经涂饰或以各种装饰材料饰面而成的板材称作饰面木塑装饰板。GB/T 24137-2009木塑装饰板检测介绍测试要求测试标准外观GB/T 24137长度,宽度,厚度尺寸GB/T 19367.1边缘直…

【毕业设计】机器学习基于cnn识别微小细胞细菌细胞器

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【疾病识别】SVM农作物叶子虫害识别与分类【含GUI Matlab源码 14872期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…

两个链表的第一个公共结点

求解代码 public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {// 初始化两个临时指针&#xff0c;分别指向两个链表的头节点ListNode temp1 pHead1;ListNode temp2 pHead2;// 只要两个指针不指向同一个节点&#xff0c;就继续遍历while (temp1 ! temp2…

用这4招,优雅的实现Spring Boot 异步线程间数据传递

Spring Boot 自定义线程池可以实现异步开发&#xff0c;在实际开发中需要在父子线程之间传递一些数据&#xff0c;比如用户信息&#xff0c;链路信息等等比如用户登录信息使用ThreadLocal存放保证线程隔离&#xff0c;代码如下&#xff1a;/*** description 用户上下文信息*/ p…

深度学习毕设项目:基于CNN深度学习python的遥感图片识别沙漠湖泊和森林

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【课程设计/毕业设计】基于python机器学习的猫狗表情识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【建议收藏】AI 音乐提示词终极指南|全网最全的创作控制手册|Suno 进阶指南|第 15 篇

历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中&#xff0c;支持120并发任务 Suno用邓紫棋的声音唱《我不是真正的快乐》 | 进阶指南 | 第8篇 Suno 12 轨全轨分离导出midi伴奏分离实战&#xff5c;进阶指南&#xff5c;第 11 篇 续写卡在 2 秒&#xff1f;解决方案…

链表相加(二)

代码求解 public ListNode reverseList(ListNode pHead){if(pHead null){return null;}ListNode pre null;ListNode cur pHead;ListNode next pHead;while(cur!null){next cur.next;cur.next pre;pre cur;cur next;}return pre;}public ListNode addInList (ListNode h…