无向图的深度优先遍历和广度优先遍历(递归)
queue.h源代码
注释:包括队列数据类型的定义和相关操作
(出队,入队,判断队空,判断队列中是否存在某元素)
int searchQ(LinkQueue &Q,int s) 函数的作用:在将邻接顶点放入队列之前需要先判断队 列中是否已存在此元素,通过查找避免队列中有重复元素。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include "queen.h"
using namespace std;
//李艳娟实验指导书版本改编,文档在‘文档’文件夹中
//无向无权图---DFS , BFS
#ifndef QUEEN_H_INCLUDED
#define QUEEN_H_INCLUDED
typedef struct Qnode{ //链队结点的类型
int data;
struct Qnode *next;
}Qnode,*QueuePtr;
typedef struct
{ //链队指针类型
QueuePtr front;
QueuePtr rear;
}LinkQueue;
void InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof(Qnode));
if(!Q.front) exit(1); //存储分配失败
Q.front->next=NULL;
}
void EnQueue(LinkQueue &Q,int e)
{ QueuePtr p;
p=(QueuePtr)malloc(sizeof(Qnode));
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
int QueueEmpty(LinkQueue &Q)
{