用c语言的队列算法实现全排列的代码
时间: 2024-05-10 09:19:45 浏览: 100
常见数据结构与算法C语言实现
以下是使用 C 语言的队列算法实现全排列的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 10
typedef struct {
char str[MAX_N + 1];
int len;
} Node;
typedef struct {
Node data[MAX_N * MAX_N];
int head, tail;
} Queue;
Queue q;
void enqueue(Node node) {
q.data[q.tail++] = node;
}
Node dequeue() {
return q.data[q.head++];
}
int is_empty() {
return q.head == q.tail;
}
void bfs(char *str) {
int visited[MAX_N] = {0};
int i, j;
Node node;
strcpy(node.str, str);
node.len = strlen(str);
enqueue(node);
while (!is_empty()) {
Node cur = dequeue();
if (cur.len == node.len) {
printf("%s\n", cur.str);
continue;
}
for (i = 0; i < node.len; ++i) {
if (visited[i]) continue;
visited[i] = 1;
Node next;
strncpy(next.str, cur.str, cur.len + 1);
next.str[cur.len] = str[i];
next.len = cur.len + 1;
enqueue(next);
visited[i] = 0;
}
}
}
int main() {
char str[MAX_N + 1];
scanf("%s", str);
bfs(str);
return 0;
}
```
请注意,本 AI 仅供学习交流使用,不能用于商业用途。此外,本 AI 对问题有一定的理解能力,但并不完美,如果产生了不当回答,请您谅解。
阅读全文