#include<iostream>
using namespace std;
const int maxsize=100; //顶点数的最大值,假设为100
typedef struct node *pointer;
struct node{ //边表结点
int no; //邻接点域
pointer next; //链域
};
typedef struct{
int data; //顶点信息
pointer first; //边表头指针
}headtype; //顶点表结点类型
typedef struct{
headtype adjlist[maxsize+1]; //顶点表,0号单元不用
int n; //顶点数
int e; //边数
}lk_graph;
int visited[maxsize+1]; //辅助数组,刚开始的时候为0,当访问完i结点后,置visited[i]=1
void creat_gl(lk_graph *g); //建立无向图的邻接表
void dfs(lk_graph *g,int v); //邻接表上DFS遍历
int main(){
lk_graph f;
creat_gl(&f);
dfs(&f,1);
return 0;
}
void creat_gl(lk_graph *g){ //建立无向图的邻接表
int i,j,e,n;
pointer p;
cin>>n; //读入顶点信息
for(i=1;i<=n;i++) visited[i]=0;
g->n=n;
for(i=1;i<=n;i++){
g->adjlist[i].data;
g->adjlist[i].first=NULL;
}
e=0;
while(cin>>i>>j,i>0){ //读入边的顶点对序号,建立边表
e++;
p=new node; //生成邻接点序号为j的表结点
p->no=j;
p->next=g->adjlist[i].first;
g->adjlist[i].first=p; //将新表结点插入到顶点vi的边表的头部
p=new node; //生成邻接点序号为i的表结点
p->no=i;
p->next=g->adjlist[j].first;
g->adjlist[j].first=p; //将表结点插入到顶点vj的边表的头部
}
g->e=e;
}
void dfs(lk_graph *g,int v){ //邻接表上DFS遍历
int j;
pointer p;
cout<<v<<" "; //访问出发点,假设为输出定点序列
visited[v]=1;
p=g->adjlist[v].first;
while(p!=NULL){ //依次搜索v的邻接点,若为访问,则递归
if(!visited[p->no]) dfs(g,p->no);
p=p->next;
}
}
using namespace std;
const int maxsize=100; //顶点数的最大值,假设为100
typedef struct node *pointer;
struct node{ //边表结点
int no; //邻接点域
pointer next; //链域
};
typedef struct{
int data; //顶点信息
pointer first; //边表头指针
}headtype; //顶点表结点类型
typedef struct{
headtype adjlist[maxsize+1]; //顶点表,0号单元不用
int n; //顶点数
int e; //边数
}lk_graph;
int visited[maxsize+1]; //辅助数组,刚开始的时候为0,当访问完i结点后,置visited[i]=1
void creat_gl(lk_graph *g); //建立无向图的邻接表
void dfs(lk_graph *g,int v); //邻接表上DFS遍历
int main(){
lk_graph f;
creat_gl(&f);
dfs(&f,1);
return 0;
}
void creat_gl(lk_graph *g){ //建立无向图的邻接表
int i,j,e,n;
pointer p;
cin>>n; //读入顶点信息
for(i=1;i<=n;i++) visited[i]=0;
g->n=n;
for(i=1;i<=n;i++){
g->adjlist[i].data;
g->adjlist[i].first=NULL;
}
e=0;
while(cin>>i>>j,i>0){ //读入边的顶点对序号,建立边表
e++;
p=new node; //生成邻接点序号为j的表结点
p->no=j;
p->next=g->adjlist[i].first;
g->adjlist[i].first=p; //将新表结点插入到顶点vi的边表的头部
p=new node; //生成邻接点序号为i的表结点
p->no=i;
p->next=g->adjlist[j].first;
g->adjlist[j].first=p; //将表结点插入到顶点vj的边表的头部
}
g->e=e;
}
void dfs(lk_graph *g,int v){ //邻接表上DFS遍历
int j;
pointer p;
cout<<v<<" "; //访问出发点,假设为输出定点序列
visited[v]=1;
p=g->adjlist[v].first;
while(p!=NULL){ //依次搜索v的邻接点,若为访问,则递归
if(!visited[p->no]) dfs(g,p->no);
p=p->next;
}
}