Liangqingooo 2023-03-31 10:25 采纳率: 73.9%
浏览 16
已结题

出栈序列指定元素先输出,但是数组未能成功赋值

有5个元素,其入栈顺序为:A、B、C、D、E,在整个可能的出栈序列中,以元素C为第1个、D为第2个出栈的序列的函数中,无法正确输出。请大家帮忙看看指点一下~感谢Thanks♪(・ω・)ノ
这是我用的第一个办法,也是不行

img


这是我用的第一个办法,也是不行
入栈调试是正常的,入栈所有函数都能正常输出原序列,但是该排序函数中,数组的值一直是0;不知道哪一步出问题了

img

img

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-03-31 10:34
    关注

    太乱了,重新写一个

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void swap(char *a, char *b) {
        char temp = *a;
        *a = *b;
        *b = temp;
    }
    
    void reverse(char *arr, int start, int end) {
        while (start < end) {
            swap(&arr[start], &arr[end]);
            start++;
            end--;
        }
    }
    
    void enumerate(char *arr, int n) {
        int count = 0;
        do {
            if (arr[2] == 'C' && arr[3] == 'D') {
                count++;
                printf("%d: ", count);
                for (int i = 0; i < n; i++) {
                    printf("%c ", arr[i]);
                }
                printf("\n");
            }
        } while (next_permutation(arr, arr + n));
    }
    
    int main() {
        char arr[] = {'A', 'B', 'C', 'D', 'E'};
        int n = sizeof(arr) / sizeof(char);
    
        enumerate(arr, n);
    
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月19日
  • 已采纳回答 10月19日
  • 创建了问题 3月31日