用C语言代码实现:如果4个字符的入栈顺列是A先、B、C、D后请给出所有不可能的出栈序列
#include<stdio.h> #include<stdlib.h> #include<string.h>
#define MAX_SIZE 10
int stack[MAX_SIZE]; int top = -1;
void push(int num){ if(top == MAX_SIZE - 1){ printf("Stack is full!\n"); return; } stack[++top] = num; }
int pop(){ if(top == -1){ printf("Stack is empty!\n"); return -1; } int temp = stack[top--]; return temp; }
void print_array(int *arr, int size){ for(int i = 0; i < size; i++){ printf("%d ", arr[i]); } printf("\n"); }
void dfs(int *arr, int size, int *visited, int *temp, int index){ if(index == size){ print_array(temp, size); return; } for(int i = 0; i < size; i++){ if(!visited[i]){ visited[i] = 1; push(arr[i]); temp[index] = pop(); dfs(arr, size, visited, temp, index+1); push(temp[index]); visited[i] = 0; } } }
int main(){ int arr[] = {'A', 'B', 'C', 'D'}; int size = sizeof(arr) / sizeof(arr[0]); int visited[size]; memset(visited, 0, sizeof(visited)); int temp[size]; dfs(arr, size, visited, temp, 0); return 0;
原文地址: http://www.cveoy.top/t/topic/dHCl 著作权归作者所有。请勿转载和采集!