首页 > 其他分享 >邻接表,图的深度优先遍历

邻接表,图的深度优先遍历

时间:2023-12-08 17:33:22浏览次数:27  
标签:优先 遍历 int vertices ALGraph ArcNode 邻接 adj first

#include<iostream>
using namespace std;
#define N 100
typedef char OtherInfo;
int visited[N]={0};

typedef struct ArcNode{
int adjvex;
OtherInfo info;
struct ArcNode* next;
}ArcNode;
typedef struct VNode{
char vex;
ArcNode* first;
}VNode,AdjList[N];
typedef struct{
AdjList vertices;
int vexnum,arcnum;
}ALGraph;
int LocateVex(ALGraph G,char v)
{
for(int i=0;i<G.vexnum;++i){
if(G.vertices[i].vex==v)return i;
}
return -1;
}
void CreatALGraph(ALGraph &G,int &err)
{
cin>>G.vexnum>>G.arcnum;
for(int i=0;i<G.vexnum;++i)
{
cin>>G.vertices[i].vex;
G.vertices[i].first=NULL;
}
for(int k=0;k<G.arcnum;++k){
char v1,v2;
cin>>v1>>v2;
int i,j;
i=LocateVex(G,v1);j=LocateVex(G,v2);
if(i==-1||j==-1)err=1;
else{
ArcNode* p1=new ArcNode;
p1->adjvex=j;
p1->next=G.vertices[i].first;
G.vertices[i].first=p1;
ArcNode *p2=new ArcNode;
p2->adjvex=i;
p2->next=G.vertices[j].first;
G.vertices[j].first=p2;
}
}
}
void DFS_ALGraph(ALGraph G,int adj)
{
cout<<G.vertices[adj].vex<<" ";
visited[adj]=1;
ArcNode* p=G.vertices[adj].first;
while(p!=NULL){
if(visited[p->adjvex]!=1)DFS_ALGraph(G,p->adjvex);
p=p->next;
}
}
int main()
{
ALGraph G;
int err=0;
char star;
CreatALGraph(G,err);
cin>>star;
int adj=LocateVex(G,star);
if(adj==-1||err==1)cout<<"error";
else{
DFS_ALGraph(G,adj);
}
return 0;
}

标签:优先,遍历,int,vertices,ALGraph,ArcNode,邻接,adj,first
From: https://www.cnblogs.com/zh-ang-zhang/p/17888679.html

相关文章

  • 这就解释了tuple("单个多字符字符串") type==tuple, 其实是字符串被拆分到元组中, 以
    #单个多字符字符串拆分list("单个多字符字符串")tuple("单个多字符字符串")set("单个多字符字符串")#重新排序#dict不行ValueError:dictionaryupdatesequenceelement#0haslength1;2isrequiredlist("单个多字符字符串",)tuple("单个多字符字符串",)set("......
  • Linux-线程优先级学习
    概念Linux系统中常用的几种调度类为SCHED_NORMAL、SCHED_FIFO、SCHED_RR。SCHED_NORMAL:用于普通线程的调度类SCHED_FIFO和SCHED_RR是用于实时线程的调度类,优先级高于SCHED_NORMAL。内核中区分普通线程与实时线程是根据线程的优先级,实时线程拥有实时优先级(real-timepriority......
  • 网工内推 | 国企网工、运维,厂商认证优先,13薪,带薪年假
    01中百集团招聘岗位:运维工程师职责描述:1、对集团内使用云计算架构(Kubernetes)的系统进行规划、运维及管理相关工作。2、对集团数据中心系统的大数据基础架构(ClouderaDistributionHadoop)的规划、运维及管理相关工作。3、对集团数据中心机房、信息数据安全、网络安全的规划、建设、......
  • 2.二叉树层序遍历
    107.二叉树的层序遍历II相对于102.二叉树的层序遍历,就是最后把result数组反转一下就可以了。classSolution{//利用链表可以进行o(1)头部插入publicLinkedList<List<Integer>>res=newLinkedList<List<Integer>>();publicList<List<Integer>>levelOrd......
  • [LeetCode] 498. Diagonal Traverse 对角线遍历
    题目Givenanmxnmatrixmat,returnanarrayofalltheelementsofthearrayinadiagonalorder.思考最初在纸上写写画画试了很多想法,但都没能解决,真的。。太弱了TT。后来在YT上看了个印度老哥的题解才醍醐灌顶。在此尝试复述他的题解。这题就是说将一个二维矩阵......
  • 二叉树创建及遍历
    #include<stdio.h>#include<iostream>usingnamespacestd;typedefcharTElemType;typedefvoidStatus;typedefintElemType;typedefstructBiTNode{ TElemTypedata; BiTNode*lchild,*rchild;}BiTNode,*BiTree;voidCreateBiTree(BiTree......
  • # yyds干货盘点 # 有一个数据对应表,遍历df数据只要df存在对应的数据就替换掉,但是这个
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Pandas数据处理的问题,一起来看看吧。问题描述:大佬们 请问下这个问题 有一个数据对应表,然后遍历df数据只要df存在对应的数据就替换掉但是这个一直报错(IndexError:index0isoutofboundsf......
  • 有一个数据对应表,遍历df数据只要df存在对应的数据就替换掉,但是这个一直报错
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Pandas数据处理的问题,一起来看看吧。问题描述:大佬们 请问下这个问题 有一个数据对应表,然后遍历df数据只要df存在对应的数据就替换掉但是这个一直报错(IndexError:index0isoutofboun......
  • PriorityBlockingQueue 优先级队列
    packagestudy;importlombok.Data;importjava.util.Comparator;importjava.util.concurrent.PriorityBlockingQueue;publicclassPriorityBlockingQueueDemo{publicstaticvoidmain(String[]args)throwsInterruptedException{PriorityBlocki......
  • 移动优先索引化对SEO的影响
    随着移动设备的普及和用户越来越多地使用手机进行搜索,搜索引擎开始采用移动优先索引化的策略。本文将为您介绍移动优先索引化对SEO的影响,并提供一些应对之策。1.什么是移动优先索引化:移动优先索引化是指搜索引擎首先以移动设备的内容和用户体验为基准来评估和排名网站。这意味着搜......