描述

给定一个无向图,在此无向图中增加一条边。

输入

多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表增加的边所依附的两个顶点。当n和m都等于0时,输入结束。

输出

每组数据输出n行。为增加边后的邻接表。每两个数字之间用空格隔开。

输入样例 1

3 2
1 2
2 3
3 1
3 1
1 2
1 3
0 0

输出样例 1

1 3 2
2 3 1
3 1 2
1 3 2
2 1
3 1

思路:

做题顺序:4003-4005-4007,邻接表的详解在我的这篇文章里,创建,遍历有疑问的同学可以看这篇~4003基于邻接表的新顶点的增加(C++,附详细解析)_鹤天寻的博客-CSDN博客https://blog.csdn.net/qq_54416938/article/details/121582300?spm=1001.2014.3001.5501

关于本题”加新边“的思路,本质上还是普通的前插法插入过程,只不过arcnum多了1而已,所以直接在插入的时候设置循环的次数比正常次数多1就可以了,不必另做复制粘贴的工作。

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
using namespace std;typedef struct LNode
{int data;struct LNode* next;
}LNode, * linklist;
typedef struct
{int vexnum;int arcnum;linklist VList;
}ALGraph;
void Create(ALGraph& alg, int n, int m)
{alg.vexnum = n;alg.arcnum = m;alg.VList = new LNode[n + 1];for (int i = 1; i <= n; i++){alg.VList[i].data = i;alg.VList[i].next = NULL;}int h, k;for (int i = 0; i <= m; i++){cin >> h >> k;linklist p = new LNode, q = new LNode;p->data = h;p->next = alg.VList[k].next;alg.VList[k].next = p;q->data = k;q->next = alg.VList[h].next;alg.VList[h].next = q;}
}
void Show(ALGraph alg)
{for (int i = 1; i <= alg.vexnum; i++){linklist p = &alg.VList[i];while (p){cout << p->data;if (p->next)cout << ' ';p = p->next;}cout << endl;}
}
int main()
{int m, n;while (cin >> n >> m && m != 0 && n != 0){ALGraph a;Create(a, n, m);Show(a);}return 0;
}

4007-基于邻接表的新边的增加(C++,附思路)相关推荐

  1. 4003基于邻接表的新顶点的增加(C++,附详细解析)

    描述 给定一个无向图,在此无向图中增加一个新顶点. 输入 多组数据,每组m+2行.第一行有两个数字n和m,代表有n个顶点和m条边.顶点编号为1到n.第二行到第m+1行每行有两个数字h和k,代表边依附的 ...

  2. 4005基于邻接表的顶点的删除(C++,附思路)

    描述 给定一个无向图,在此无向图中删除一个顶点. 输入 多组数据,每组m+2行.第一行有两个数字n和m,代表有n个顶点和m条边.顶点编号为1到n.第二行到第m+1行每行有两个数字h和k,代表边依附的两 ...

  3. 4014基于邻接表的长度为k的简单路径的求解

    描述 一个连通图采用邻接表作为存储结构.设计一个算法,判断无向图中任意给定的两点是否存在一条长度为k的简单路径. 输入 多组数据,每组m+3数据行.第一行有两个数字n,m和k,代表有n个顶点,m条边和 ...

  4. C++笔记-基于邻接表的BFS(宽度优先遍历)

    这里是基于邻接表的,有向的,具体代码如下: #include <iostream> #include <list>using namespace std;class Graph ...

  5. SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...

  6. 【 第11关:基于邻接表的深度优先遍历】【编程题实训-图】【头歌】【bjfu-282】

    任务描述 一个连通图采用邻接表作为存储结构.设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程. 编程要求 输入 多组数据,每组m+2数据行.第一行有两个数字n和m,代表有n个顶点和m条边.顶点 ...

  7. 数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列.(同一个结点的同层邻接点,节点编号小的优先遍历) 输入 输入第一行为整数n(0< ...

  8. 【数学建模】基于SIR模型实现新冠病毒COVID-19估计附matlab代码

    1 内容介绍 COVID-19是由严重急性呼吸综合症冠状病毒2型引发的传染病,它最初病毒携带者是一些动物,传染源主要是COVID-19患者,无症状患者.传播方式主要是呼吸道飞沫近距离传播,接触传播,还 ...

  9. 3001基于哈夫曼树的数据压缩算法(附思路及注释)

    写在最前:我的思路用到了stl的map,对组pair相关知识. 描述 输入一串字符串,根据给定的字符串中字符出现的频率建立相应哈夫曼树,构造哈夫曼编码表,在此基础上可以对待压缩文件进行压缩(即编码), ...

最新文章

  1. 01 手把手带你构建大规模分布式服务--高并发、高可用架构系列,高质量原创好文!...
  2. 在线作图|2分钟绘制一张箱线图
  3. 【Flutter】StatefulWidget 组件 ( 创建 StatefulWidget 组件 | MaterialApp 组件 | Scaffold 组件 )
  4. js/vue 高德地图绘制驾车路线图
  5. 软件工程 --第七章 -- 实现(未完)
  6. POJ 2590 Steps (ZOJ 1871)
  7. 如何制作毛玻璃效果?
  8. eight_queens
  9. Silverlight Quick Starts翻译(二):第一章 创建一个Silverlight工程
  10. java 日历类_java常用的类---日历类
  11. DNF自动获取C语言,VC++开发硬件DNF搬砖项目全新发车,想上车的要赶紧
  12. 匈牙利命名法为何被淘汰_体育午报:15年魔咒破除!国足淘汰赛终迎一胜
  13. 英特尔DRM内核驱动程序默认启用PSR2省电功能
  14. Chromedriver各个版本浏览器驱动下载地址
  15. 小杜机器人线下店_泡泡玛特线下机器人商店突破1000台!
  16. jmap命令(Java Memory Map)
  17. 在Ubuntu终端使用mkdir创建文件夹后Xftp不能上传文件到文件夹中的问题解决方法
  18. js添加多marker 高德地图_web开发如何使用高德地图API(四)通过AMap.Marker自定义标点...
  19. python如何换行
  20. Artery6基本操作流程

热门文章

  1. jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
  2. 对于整数数组类的算法的终极解决方案
  3. matlab 图像常用函数
  4. Android Get方式发送信息
  5. 近距离P2P通讯技术平台 Alljoyn
  6. Android多种样式的进度条
  7. Oracle归档日志(翻译)
  8. tensorflow with gpu 环境配置
  9. memcache单机版安装
  10. numpy中数组的简单运算以及使用