数据结构-算法(一)

一、已知无向图的邻接矩阵,求无向图的邻接表。

(1)提示:无向图如下图(a)所示,已知邻接矩阵如图(b)所示,求对应的邻接表(c)。

(2)请定义void adjMatrix_2_adjList(int b[4][4], AdjList a)函数。

typedef struct LNode
{int data;//顶点信息,代表入度顶点struct LNode  *next;
}LNode, *LinkList;typedef struct
{int data; //顶点信息,代表出度顶点LinkList head;
}AdjList[4];//共4个顶点void adjMatrix_2_adjList(int b[4][4], AdjList a)
{ LNode=*p, *G;
for(int i = 0; i <=4; i++){a[i].head = NULL;a[i].data=i+1;}
for(int i = 1; i <= 4; i++){a.vertives[i].head = NULL;}
for(int i=0;i<=4;i++)
{  for(int j=0;j<=4;j++)
{if(b[i][j]==1)
{p=(LNode*)mallo(sizelof(LNode));
p->data=j+1;p->next= NULL;
if(!a[i].head)a[i].head=p;
else{G=a[i].head;} 
while{G->next}
G=G->next;
G->next=p;
}
}
}
}void print_AdjList(AdjList a)//打印邻接表
{for(int i=0; i<4; i++){printf("Node %d: ", a[i].data);LNode *p = a[i].head;while(p != NULL){printf("-->%d", p->data);p = p->next;}printf("\n");}
}

二、实现如下功能:已知无向图的邻接表,判断该邻接表是否连通。

//1. 提示:函数可以写成如下形式BOOL judge_is_connected(adjList b[ ])

//2. 提示:(a)结构体自己定义;(b)定义提示1的函数

void BOOL judge_is_connected(adjList b[ ])
{ 
for(int i= 1,i<=4;i++)
{G->book[i]=0;}
DFS(*a,0);
for(int i= 1,i<=4;i++)
{
if(!G->book[i])
{
return 0;
}
} 
return 1;
}
}

三、已知无向图的邻接矩阵,求该邻接矩阵的深度优先遍历 。

(1)提示:无向图如下图(a)所示,其邻接矩阵如图(b)所示。

(2)请定义void  DFS(MGraph *G,  int ves)函数。


#include<stdio.h>
#define MAX 100
#define NUM 8 //图的顶点个数typedef struct
{int e[MAX][MAX];int vesNum; //图中的顶点数;int book[MAX];//标志判断是否有被访问过 
}MGraph;int a[NUM][NUM] = { 0,  1,  1,  0,  0,  0,  0,  0,1,  0,  0,  1,  1,  0,  0,  0,1,  0,  0,  0,  0,  1,  1,  0,0,  1,  0,  0,  0,  0,  0,  1,0,  1,  0,  0,  0,  0,  0,  1,0,  0,  1,  0,  0,  0,  0,  1,0,  0,  1,  0,  0,  0,  0,  1,0,  0,  0,  1,  1,  1,  1,  0 };void createMGraph(MGraph *G)
{int i, k;G->vesNum = NUM;//没被访问过的结点置为0for(i=0; i<G->vesNum; i++)	G->book[i]=0;//创建邻接矩阵for(i=0; i<G->vesNum; i++)for(k=0; k<G->vesNum; k++)G->e[i][k] = a[i][k];
}
void DFS(MGraph *G,int ves)
{G->book[ves] =1;
printf(“%d”,ves);
for(int i=0;i<G.vesNum;i++)
{if(!G->book[ves])&&(G->e[ves][i]!= MAX)}
{DFS(G,i)}
} 
}
void main()
{MGraph G;createMGraph(&G);DFS(&G, 0); //0表示从第1个点开始搜索,如果是1表示从第2个点开始:)
}

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

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

相关文章

2025年嵌入式通信电源系统品牌有哪些?

现在科技跑得飞快&#xff0c;嵌入式通信电源系统可是越来越吃香了&#xff0c;尤其是在5G、物联网、智能家居这些热门地方。这玩意儿不光能让设备稳稳当当干活儿&#xff0c;还特省电、贼聪明&#xff0c;优势杠杠的&#xff01;既然大家伙儿都这么需要它&#xff0c;那到了20…

Ubuntu24.04环境下causal_conv1d和mamba_ssm安装

环境&#xff1a;WSL的Ubuntu24.041.创建conda环境&#xff0c;其中python版本为3.10.132.当前conda环境依次执行下面命令&#xff1a;conda install cudatoolkit11.8 -c nvidia pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 -f https://mirrors.aliyun.com/pyto…

Python爬虫实战: 爬虫常用到的技术及方案详解

爬虫是获取网络数据的重要工具,Python因其丰富的库生态系统而成为爬虫开发的首选语言。下面我将详细介绍Python爬虫的常用技术和方案。 一、基础技术栈 1. 请求库 Requests - 同步HTTP请求库 import requests# 基本GET请求 response = requests.get(https://httpbin.org/g…

k8s——持久化存储 PVC

目录 k8s持久化存储&#xff1a; PVC 1 k8s PV是什么&#xff1f; 2 k8s PVC是什么&#xff1f; 3 k8s PVC和PV工作原理 4 创建pod&#xff0c;使用pvc作为持久化存储卷 ​三种回收策略详解​ 1、创建nfs共享目录 2、如何编写pv的资源清单文件 3、创建pv 更新资源清单文…

【系统架构设计师】数据库设计(一):数据库技术的发展、数据模型、数据库管理系统、数据库三级模式

数据库技术是研究数据库的结构、存储、设计、管理和应用的一门软件学科。 数据库系统本质上是一个用计算机存储信息的系统。 数据库管理系统是位于用户与操作系统之间的一层数据管理软件&#xff0c;其基本目标是提供一个可以方便、有效地存取数据库信息的环境。 数据库就是信息…

深入理解 Structured Outputs:基于 JSON Schema 的结构化输出实践指南

深入理解 Structured Outputs&#xff1a;基于 JSON Schema 的结构化输出实践指南 目录 引言Structured Outputs 概述应用场景与优势核心用法&#xff1a;结构化响应的获取功能对比&#xff1a;Structured Outputs 与 JSON 模式典型应用示例链式思维&#xff08;Chain of Tho…

大模型应用编排工具Dify之插件探索

1.前言 ​ dify 1.x版本以后插件功能丰富了很多&#xff0c;推出的插件市场上有各式各样的插件&#xff0c;比如 连接数据库、连接大模型、搜索和 mcp服务等。其中&#xff0c;有一个比较大的改动&#xff0c;模型供应商不再内置&#xff0c;而是通过插件的形式提供。因此&…

ubuntu2204安装搜狗拼音输入法

安装必要的软件包 sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-config-qt fcitx5-configtool -y安装搜狗拼音 下载最新 .deb 包&#xff08;官方地址&#xff1a;https://pinyin.sogou.com/linux/&#xff09;&#xff0c;安装&#xff1a; sudo dp…

三,设计模式-抽象工厂模式

目的 在 工厂模式 中&#xff0c;当需要创建新的产品时&#xff0c;则额外需要创建新的工厂&#xff0c;这种模式是对产品制造方法的抽象化&#xff0c;如果产品种类变多&#xff0c;则工厂数目变多&#xff0c;则代码规模会越来越大&#xff0c;且不同的产品类的生成依赖不同…

Vue3响应式编程核心:ref与reactive全方位对比

在Vue3的Composition API中&#xff0c;ref和reactive是构建响应式数据的核心工具。许多开发者对它们的选择存在困惑&#xff1a;何时用ref的.value&#xff1f;何时用reactive的直接访问&#xff1f;为何解构会丢失响应性&#xff1f;本文从原理、场景到实战陷阱&#xff0c;为…

Redis实战-缓存的解决方案(一)

1.什么是缓存缓存就是数据交换的缓存区&#xff0c;是存储数据的临时区域&#xff0c;读写性能高。浏览器会有缓存&#xff0c;tomcat服务器也会有缓存&#xff0c;数据库也会有缓存&#xff0c;CPU也会有缓存&#xff0c;磁盘也会有缓存&#xff0c;所以说缓存是无处不在的并且…

CI/CD企业案例详解

7.持续集成持续交付企业示例 为了让容器构建镜像可以持续集成并自动上传到harbor仓库&#xff0c;业务主机通过持续交付自动从仓库中下载镜像最近版本并实现业务更新7.1 在jenkins中添加registry节点 7.1.1 在业务节点中安装docker和java环境并配置其可以从仓库中下载镜像 # 新…

C++ 入门核心知识

一、C 课程概述与发展历史1. 发展历程&#xff1a;从 C 语言扩展到标准化C 的起源可追溯至 1979 年&#xff0c;由贝尔实验室的 Bjarne Stroustrup 主导开发。当时他为解决大型项目开发中 C 语言在可维护性和扩展性上的不足&#xff0c;在 C 语言基础上引入了面向对象编程特性。…

labelme数据标注保姆级教程:从安装到格式转换全流程,附常见问题避坑指南(含视频讲解)

引言&#xff1a;为什么选择labelme&#xff1f; 在人工智能和机器学习领域&#xff0c;高质量的标注数据是训练优秀模型的基础。而 labelme作为一款开源、跨平台的图像标注工具&#xff0c;凭借其强大的功能和易用性&#xff0c;成为了数据标注领域的热门选择。 它支持多种标…

人工智能-python-深度学习-自动微分

自动微分&#xff1a;基础概念与应用 自动微分&#xff08;Autograd&#xff09;是现代深度学习框架&#xff08;如PyTorch、TensorFlow&#xff09;中的一个核心功能。它通过构建计算图并在计算图上自动计算梯度&#xff0c;简化了反向传播算法的实现。以下是自动微分的基本概…

k8s原理及操作

简介 kubernetes的本质是一组服务器集群&#xff0c;它可以在集群的每个节点上运行特定的程序&#xff0c;来对节点中的容器 进行管理。目的是实现资源管理的自动化&#xff0c;主要提供了如下的主要功能&#xff1a; 自我修复&#xff1a;一旦某一个容器崩溃&#xff0c;能够在…

理解音频响度:LUFS 标准及其计算实现

LUFS 及其重要性 1.1、什么是 LUFS&#xff1f; LUFS&#xff08;Loudness Units relative to Full Scale&#xff09;是音频工程中用于测量感知响度的标准单位。它已成为广播、流媒体和音乐制作领域的行业标准&#xff0c;用于确保不同音频内容具有一致的响度水平。 LUFS 是 I…

【在ubuntu下使用vscode打开c++的make项目及编译调试】

在ubuntu下使用vscode打开c的make项目及编译调试第一步&#xff1a;安装必要的软件第二步&#xff1a;示例项目准备1. 创建C源文件&#xff1a; main.cpp2. 创建头文件&#xff1a; utils.h3. 创建实现文件&#xff1a; utils.cpp第三步&#xff1a;使用 VS Code 打开项目第四步…

3-2.Python 函数 - None(None 概述、None 应用场景)

一、None 概述在 Python 中&#xff0c;None 是一个特殊的常量&#xff0c;用于表示空值或无值None 是 Python 中唯一的一个 NoneType 类型的实例二、None 应用场景 1、定义变量 None 常用于初始化变量&#xff0c;表示该变量暂时不需要有具体值 name Noneprint(name) print(t…

js获取html元素并设置高度为100vh-键盘高度

获取HTML元素并设置高度为(100vh - 键盘高度) 我将设计一个页面&#xff0c;展示如何获取HTML元素并动态设置其高度为视口高度减去键盘高度&#xff0c;这在移动设备上特别有用&#xff0c;可以避免键盘遮挡内容。 设计思路 创建一个带有输入框的界面&#xff0c;模拟键盘弹…