1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 2 1 5 3 Adjacency list
Dec 19, 2015
1
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
2
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
0
stdout
stack
3
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
1
stack
Adjacency list
XX
stdout
0
4
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
1
Adjacency list
2
XX X
X
stdout
0
stack
5
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
1
Adjacency list
2
XXX
XX
X
0
stdout
0
stack
6
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X
1
2
0
5
stdout
0
stack
7
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
1
2
0
5
4
stdout
0
stack
8
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
stdout
XXX
XX
X X
X XX
X
X
1
2
0
5
4
6
0
stack
9
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
stdout
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
4
6
0
0
stack
10
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
0
stdout
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
4
6
0
stack
11
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
0 6
stdout
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
4
0
stack
12
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
0
XX
0 6
stdout
4
3
stack
13
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
0
XX
XX
0 6
stdout
4
3
2
stack
14
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
0
XX
XX X
X
0 6
stdout
4
3
2
4
stack
15
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
0
XX
XX X
X
0 6 4
stdout
4
3
2
stack
16
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
0
XX
XX X
X
0 6 4 2
stdout
4
3
stack
17
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
0
XX
XX X
X
0 6 4 2 3
stdout
4
stack
18
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
5
0
XX
XX X
X
0 6 4 2 3 4
stdout
stack
19
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
0
XX
XX X
X
0 6 4 2 3 4 5
stdout
stack
20
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
2
0
XX
XX X
X
0 6 4 2 3 4 5 0
stdout
stack
21
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X1
0
XX
XX X
X
0 6 4 2 3 4 5 0 2
stdout
stack
22
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X
0
XX
XX X
X
0 6 4 2 3 4 5 0 2 1
stdout
stack
23
Euler Tour: Example
0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0
0
6
4
21
5
3
Adjacency list
XXX
XX
X X
X XX
X
X
X
X
XX
XX X
X
0 6 4 2 3 4 5 0 2 1 0
stdout
24
int euler(Graph G, int v) { link t; int w; for(t = G->adj[v]; t != NULL, v = w) { STACKpush(v); w = t->w; GRAPHremove(G, EDGE(v, w)); } return v;}
void GRAPHshowEuler(Graph G, int v) { STACKinit(G->E); STACKpush(v); while ((euler(G, v) == v) && !STACKisempty()) v = STACKpop(); printf("%d ", v); } if (!STACKisempty()) printf("Not Eulerian.\n");}
Euler Tour
Euler Tour: Implementation
cyclic path back to initial vertex
delete both copies of edge