// 栈
typedef struct Node {
// 是否已访问
int visited
// 值
int value
} Node
Node NullValue
typedef struct stack{
int length
Node arrs[10]
}s1
s1 stack
Node node[10]
int arrs[10] = { 0,1,2,3,4,5,6,7,8,9 }
int getLength() {
return stack.length
}
int getHead() {
return stack.arrs[stack.length].value
}
int push(Node a) {
stack.arrs[stack.length++] = a
}
void pop() {
stack.arrs[stack.length--] = NullValue
}
void display() {
for (int i = 0
printf("%d ", stack.arrs[i].value)
}
printf("\n")
}
int main() {
int length
int j = 0
int index,now
int i
NullValue.value = -1
stack.length = 0
// 把数组当作 树
// 0
// 1 2
// 3 4 5 6
// 7 8 9
for (i = 0
node[i].value = arrs[i]
node[i].visited = 0
}
for (i = 0
// 结果
length = getLength()
for (j = 0
pop()
}
index = i
now = i
push(node[i])
node[i].visited = 1
display()
index++
while (getLength() != 10 - i) {
if (index < 10) {
if (node[index].visited == 0) {
push(node[index])
node[index].visited = 1
display()
pop()
index++
}
}
else {
index = ++now
push(node[index])
index++
for (j = 0
node[j].visited = 0
}
}
}
}
return 0
}
0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
0 1 2
0 1 3
0 1 4
0 1 5
0 1 6
0 1 7
0 1 8
0 1 9
0 1 2 3
0 1 2 4
0 1 2 5
0 1 2 6
0 1 2 7
0 1 2 8
0 1 2 9
0 1 2 3 4
0 1 2 3 5
0 1 2 3 6
0 1 2 3 7
0 1 2 3 8
0 1 2 3 9
0 1 2 3 4 5
0 1 2 3 4 6
0 1 2 3 4 7
0 1 2 3 4 8
0 1 2 3 4 9
0 1 2 3 4 5 6
0 1 2 3 4 5 7
0 1 2 3 4 5 8
0 1 2 3 4 5 9
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 8
0 1 2 3 4 5 6 9
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 9
0 1 2 3 4 5 6 7 8 9
1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
1 2 8
1 2 9
1 2 3 4
1 2 3 5
1 2 3 6
1 2 3 7
1 2 3 8
1 2 3 9
1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
1 2 3 4 8
1 2 3 4 9
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 5 8
1 2 3 4 5 9
1 2 3 4 5 6 7
1 2 3 4 5 6 8
1 2 3 4 5 6 9
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 9
1 2 3 4 5 6 7 8 9
2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 3 4
2 3 5
2 3 6
2 3 7
2 3 8
2 3 9
2 3 4 5
2 3 4 6
2 3 4 7
2 3 4 8
2 3 4 9
2 3 4 5 6
2 3 4 5 7
2 3 4 5 8
2 3 4 5 9
2 3 4 5 6 7
2 3 4 5 6 8
2 3 4 5 6 9
2 3 4 5 6 7 8
2 3 4 5 6 7 9
2 3 4 5 6 7 8 9
3
3 4
3 5
3 6
3 7
3 8
3 9
3 4 5
3 4 6
3 4 7
3 4 8
3 4 9
3 4 5 6
3 4 5 7
3 4 5 8
3 4 5 9
3 4 5 6 7
3 4 5 6 8
3 4 5 6 9
3 4 5 6 7 8
3 4 5 6 7 9
3 4 5 6 7 8 9
4
4 5
4 6
4 7
4 8
4 9
4 5 6
4 5 7
4 5 8
4 5 9
4 5 6 7
4 5 6 8
4 5 6 9
4 5 6 7 8
4 5 6 7 9
4 5 6 7 8 9
5
5 6
5 7
5 8
5 9
5 6 7
5 6 8
5 6 9
5 6 7 8
5 6 7 9
5 6 7 8 9
6
6 7
6 8
6 9
6 7 8
6 7 9
6 7 8 9
7
7 8
7 9
7 8 9
8
8 9
9