选择合适的存储结构存储无向图,要求完成如下功能:
①创建:输入顶点和边的信息,创建图;
②查询:输入顶点,所有与其关联的其余顶点;
③深度优先遍历:指定起点,输出深度优先序列;
④广度优先遍历:指定起点,输出广度优先序列;
⑤叶子结点信息:输出每个叶子结点的值,并统计叶子结点总数;
⑥二叉树深度:输出二叉树的深度值。
#include<iostream>
#include<queue>
using namespace std;
bool DFSvisited[50];//bool型数组,用来标记已经遍历过的
bool BFSvisited[50];
typedef struct EdgeNode//边结点
{
int adjvex;//整型数据
struct EdgeNode * next;//指向下一个节点
} EdgeNode;
typedef struct//顶点表节点结构
{
string data;
EdgeNode * firstedge;//指向边表的第一个节点
} AdjList;
typedef struct//图的邻接表结构
{
AdjList adjList[20];//定义数组用于储存顶点
int numVertex,numEdge;
} GraphAdjList;
int local(GraphAdjList G,string val)//确定边所在的位置
{
for(int i=0; i<G.numVertex; i++)
{
if(G.adjList[i].data==val)
return i;
}
return -1;
}
void CreateGra