【王道数据结构】【chapter6图】【P234t5】

假设图用邻接表表示,设计一个算法,输出从顶点vi到顶点vj的所有简单路径

#include <iostream>]
#include <string.h>
#define maxsize 10
typedef struct node{
    int data;
    struct node *next;
}node ,*pnode;


pnode buynode(int x)
{
    pnode tmp=(pnode) malloc(sizeof (node));
    tmp->data=x;
    tmp->next= nullptr;
    return tmp;
}

pnode * graph(int point)//结点数量
{
    pnode * g=(pnode*) malloc(sizeof (pnode)*point);
    for(int i=0;i<point;i++)
        g[i]= buynode(i);
    return g;
}
void insert(pnode* g,int p1,int p2)
{
    pnode tmp=g[p1];
    while(tmp->next&&tmp->next->data<p2) tmp=tmp->next;
    pnode ne=tmp->next;
    tmp->next= buynode(p2);
    tmp->next->next=ne;

    tmp=g[p2];
    while(tmp->next&&tmp->next->data<p1) tmp=tmp->next;
    ne=tmp->next;
    tmp->next= buynode(p1);
    tmp->next->next=ne;
}
void figure1(pnode* g)
{
    insert(g,0,1);
    insert(g,1,2);
    insert(g,2,3);
    insert(g,3,4);
    insert(g,4,0);
    insert(g,0,2);
    insert(g,0,3);

}
void print(pnode *g,int point)
{
    for(int i=0;i<5;i++)
    {
        pnode tmp=g[i];
        while(tmp) {
            printf("%3d",tmp->data);
            tmp=tmp->next;
        }
        puts("");
    }
}

void _dfs(pnode *g,int p1,int p2,int*visited,int*path,int &pointer)
{
    visited[p1]=1;
    path[++pointer]=p1;
    if(p1==p2){
        for(int i=0;i<=pointer;i++) printf("%2d->",path[i]);
        puts("");
        return;
    }
    pnode tmp=g[p1];
    while(tmp->next){
        if(!visited[tmp->next->data])//没有访问过
        {
            _dfs(g,tmp->next->data,p2,visited,path,pointer);
            visited[path[pointer]]=0;
            pointer--;
        }
        tmp=tmp->next;
    }
}
void dfs(pnode* g,int p1,int p2)
{
    int *visited=(int*) malloc(sizeof (int)*maxsize);
    int *path=(int*) malloc(sizeof (int )*maxsize);
    int pointer=-1;
    for(int i=0;i<maxsize;i++) visited[i]=0,path[i]=0;
    printf("the paths are:\n");
    _dfs(g,p1,p2,visited,path,pointer);
}
int main() {
    pnode* g1=graph(5);
    figure1(g1);
    print(g1,5);
    dfs(g1,0,3);
    return 0;
}

测试用的树如下

测试从0到3的全部路径

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux取经路】文件系统之缓冲区

文章目录 一、先看现象二、用户缓冲区的引入三、用户缓冲区的刷新策略四、为什么要有用户缓冲区五、现象解释六、结语 一、先看现象 #include <stdio.h> #include <string.h> #include <unistd.h>int main() {const char* fstr "Hello fwrite\n"…

电路设计(26)——速度表的multisim仿真

1.设计要求 设计一款电路&#xff0c;能够实时显示当前速度。 用输入信号模拟行驶的汽车&#xff0c;信号频率的1hz代表汽车速度的1m/s。最后速度显示&#xff0c;以km/h为单位。 2.电路设计 当输入信号频率为40HZ时&#xff0c;显示的速度应该为144KM/h&#xff0c;仿真结果为…

petalinux_zynq7 驱动DAC以及ADC模块之一:建立IP

0. 环境 - ubuntu18 - vivado 2018.3 - mizar z7010 ada106模块 1. vivado 1.1 创建vivado工程 运行vivado source /tools/Xilinx/Vivado/2018.3/settings64.sh vivado& 创建vivado工程 Vivado -> Create Project -> Next -> -> Project name: …

OpenCV中图像的HSV色彩空间

在HSV 色彩空间中H, S, V 这三个通道分别代表着色相(Hue)&#xff0c;饱和度(Saturation)和明度(Value)&#xff0c; 原本输出的HSV 的取值范围分别是0-360, 0-1, 0-1; 但是为了匹配目标数据类型OpenCV 将每个通道的取值范围都做了修改,于是就变成了0-180, 0-255, 0-255 impo…

人机交互新研究:MIT开发了结合脑电和眼电的新式眼镜,与机器狗交互

还记得之前的AI读心术吗&#xff1f;最近&#xff0c;「心想事成」的能力再次进化&#xff0c; ——人类可以通过自己的想法直接控制机器人了&#xff01; 来自麻省理工的研究人员发表了Ddog项目&#xff0c;通过自己开发的脑机接口&#xff08;BCI&#xff09;设备&#xff…

设置墙、楼板每层的厚度和材质——群问题整理003

你好&#xff0c;这里是BIM的乐趣&#xff0c;我是九哥~ 今天分享的是设置墙、楼板等每层的厚度和材质。 我们都知道&#xff0c;Revit中墙、板这类系统族&#xff0c;厚度设置和普通族是不太一样的&#xff0c;他的厚度参数可读&#xff0c;但是并不可设置&#xff0c;因为我…

flannel网络拓扑

测试环境创建 在k8s中部署flannel网络插件 https://blog.csdn.net/weixin_64124795/article/details/128894411 参考文章部署k8s集群和flannel网络插件 我的k8s集群物理环境 我的集群中只有两个节点master和node1节点 [rootmaster sjs]# kubectl get node NAME STATU…

MySQL 索引原理以及 SQL 优化

索引 索引&#xff1a;一种有序的存储结构&#xff0c;按照单个或者多个列的值进行排序。索引的目的&#xff1a;提升搜索效率。索引分类&#xff1a; 数据结构 B 树索引&#xff08;映射的是磁盘数据&#xff09;hash 索引&#xff08;快速锁定内存数据&#xff09;全文索引 …

华为OD机试真题-查找接口成功率最优时间段-2023年OD统一考试(C卷)--Python3--开源

题目&#xff1a; 考察内容&#xff1a; for 时间窗口list(append, sum, sort) join 代码&#xff1a; """ 题目分析&#xff1a;最长时间段 且平均值小于等于minLost同时存在多个时间段&#xff0c;则输出多个&#xff0c;从大到小排序未找到返回 NULL 输入…

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图提供一个强大的机制&#xff0c;通过预先计算并将查询结果集存储为物理表来提高查询性能。本教程将使用 DVD Rental Database 数据库作为演示例子&#xff0c;指导你在 PostgreSQL中创建实体化视图。 了解实体化视图 实体化视图是查询结果集的快照&…

T-Dongle-S3开发笔记——分区表

参考&#xff1a; ESP32之 ESP-IDF 教学&#xff08;十三&#xff09;—— 分区表_esp32分区表-CSDN博客 分区表 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com) 分区表是 ESP32 划分内部 flash 闪存的清单&#xff0c;它将 flash 划分为多个不同功能的区域用于…

【前端素材】推荐优质后台管理系统inspina平台模板(附源码)

一、需求分析 后台管理系统是一个集成了多种功能模块的系统&#xff0c;通过这些模块的协同工作&#xff0c;实现对网站、应用程序或系统的全面管理和控制。管理员通过后台管理系统可以高效地管理用户、内容、数据、权限等方面的工作&#xff0c;确保系统的正常运行和安全性。…

MariaDB落幕和思考

听过MySQL的基本也都知道 MariaDB。MariaDB由MySQL的创始人主导开发&#xff0c;他早前曾以10亿美元的价格&#xff0c;将自己创建的公司MySQL AB卖给了SUN&#xff0c;此后&#xff0c;随着SUN被甲骨文收购&#xff0c;MySQL的所有权也落入Oracle的手中。传闻MySQL的创始人担心…

【火猫TV】DOTA2-喀山未来运动会:LGD 战队2-0击败Neon

在2月22号进行的俄罗斯喀山未来运动会DOTA2项目淘汰赛上,LGD 战队以2-0击败Neon战队晋级下一轮。双方对阵第二局,LGD对线期三路优,中期圣堂小鱼越打越肥,轻松拿下了比赛的胜利,以下是对决战报。转载:火猫TV资讯https://www.huomaotv.com/ LGD战队在天辉,阵容是小鱼、圣堂、玛尔…

使用ffmpeg实现视频片段截取并保持清晰度

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg -i input.mp4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-ve…

Python Web开发记录 Day2:CSS

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 二、CSS1、CSS-初始入门①快速了解②CSS应用方式…

SpringCloud(14)之SpringCloud Consul

我们知道 Eureka 2.X 遇到困难停止开发了&#xff0c;所以我们需要寻找其他的替代技术替代Eureka&#xff0c;这一小 节我们就讲解一个新的组件Consul。 一、Consul介绍 Consul 是 HashiCorp 公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置。与其它分布式…

横空出世,Bright Data 低代码数据平台,即将颠覆你的认知!

大家好&#xff0c;我是锋哥&#xff0c;最近接了个监控平台的私活项目。由于监控公开的站点太多&#xff0c;在我无从下手迷茫之际&#xff0c;竟然无意中发现了这个宝藏级低代码数据平台 - 亮数据。功能强大&#xff0c;性能炸裂&#xff01; 传统开发 以前我们开发这种监控…

文件上传漏洞--Upload-labs--Pass10--双写绕过

一、什么是双写绕过 顾名思义&#xff0c;双写绕过就是双写文件后缀名来进行绕过&#xff0c;如&#xff1a;test.php 双写后为 test.pphphp。通常情况下双写绕过用于绕过源代码中的 str_ireplace()函数。 二、双写绕过原理 1、首先进行代码审计&#xff0c;源代码中有黑名单…
最新文章