为啥这段代码我手动模拟不出来呀 求佬指教 按深度优先下个访问的不应该是2吗 但它又在栈底。
王道图非递归深度优先搜索(相关搜索:深度优先搜索|深度优先)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【相关推荐】
- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7797606
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列和出队列的算法。
- 您还可以看一下 张旭老师的【造物者】手把手带你做快递管理系统课程中的 【造物者】第六节·管理员登陆前后端交互小节, 巩固相关知识点
- 除此之外, 这篇博客: 数据结构 || 图的广度优先搜索遍历以及求两点间的最短路径中的 求图的任意两点间的最短路径: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
如下:
将队列的结构改为如图所示,即每次不将队列的头部退出队列内而是每次通过移动头部指针来完成,而其他节点都附加一个前向指针(front),指向引导当前节点的前一个节点,也就是每一次的head。struct Node { Node *next; Node *front; int data; }; int BFSPath(AMLGraph G, string v1, string v2) { int i1 = LocateVex(G.adjmulist, G.vexnum, v1); int i2 = LocateVex(G.adjmulist, G.vexnum, v2); //int num = 0; Node *head; Node *rear; head = NULL; rear = NULL; for(int i = 0; i < G.vexnum; ++i) { visit[i] = unvisited; } visit[i1] = visited; Node *temp = new Node; temp->data = i1; temp->front = NULL; temp->next = NULL; head = rear = temp; while (head) { int v = head->data; for (int w = FirstAdjVex(G, v); w >= 0; w = NextAdjVex(G, v, w)) { if (visit[w] == unvisited) { Node *temp0 = new Node; temp0->data = w; temp0->front = head; temp0->next = NULL; rear->next = temp0; rear = temp0; visit[w] = visited; if (rear->data == i2) { Node *p = rear; while(p) { cout << p->data << endl; p = p->front; } return 1; } } } head = head->next; } cout << "Not Find!" << endl; return 0; }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 结构功能耦合指标计算
- ¥20 visual studio中c语言用ODBC链接SQL SERVER
- ¥50 AI大模型精调(百度千帆、飞浆)
- ¥15 非科班怎么跑代码?如何导数据和调参
- ¥15 福州市的全人群死因监测点死亡原因报表
- ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
- ¥15 系统2008r2 装机配置推荐一下
- ¥15 悬赏Python-playwright部署在centos7上
- ¥15 psoc creator软件有没有人能远程安装啊
- ¥15 快速扫描算法求解Eikonal方程咨询