我的教授让我们写了一个char队列(没有模板,只有char),我这样做没有太多麻烦。现在,我用它编写了一个驱动程序(main()),它将打印出序列ABC的每种组合。

字符串必须按以下顺序生成:

A
B
C
AA
AB
AC
BA
BB
BC
CA
CB
CC
AAA
AAB
AAC
ABA
ABB
ABC
ACA
ACB
ACC
etc.

MAX_SIZE = 10用于队列,因此应该在大约25个字符串后引发溢出异常。

这是提示:
Start with A and B and C in the queue.
“Remove it Display it then Add Add  Add ”

哪一种有意义,但我不知道如何每次都知道如何使主控制结构转换一个字符长度(就像一旦它把所有单个字符都移动到两倍,再到三倍,等等)。

最佳答案

这是一个解决方案。很简单。

Queue q;

q.enqueue('A');
q.enqueue('\n');
q.enqueue('B');
q.enqueue('\n');
q.enqueue('C');
q.enqueue('\n');

for (size_t i = 0; i < 25; ++i) {
    size_t len = 0;
    char str[256];
    char c;

    while ((c = q.dequeue()) != '\n')
        str[len++] = c;

    str[len] = '\0';

    std::cout << str << std::endl;

    for (size_t j = 0; j < len; ++j)
        q.enqueue(str[j]);

    q.enqueue('A');
    q.enqueue('\n');

    for (size_t j = 0; j < len; ++j)
        q.enqueue(str[j]);

    q.enqueue('B');
    q.enqueue('\n');

    for (size_t j = 0; j < len; ++j)
        q.enqueue(str[j]);

    q.enqueue('C');
    q.enqueue('\n');
}

10-07 13:00