关于#c++顺序栈#的问题:能不能输入数据后先初始化和判空再进栈

有没有什么办法,我①先输入数据,但是不进入顺序栈,②先初始化,然后判断是否为空③这时候我再将前边输入的数据进栈

参考GPT和自己的思路:可以的,你可以先声明一个空栈,然后输入数据后进行初始化,并判断是否为空,最后再将数据入栈。实现代码如下:

#include <iostream>
using namespace std;

#define MAXSIZE 100
typedef struct {
    int data[MAXSIZE];
    int top;
} SqStack;

// 判断栈是否为空
bool isEmpty(SqStack S) {
    if (S.top == -1) {
        return true;
    } else {
        return false;
    }
}

// 入栈操作
bool push(SqStack& S, int x) {
    if (S.top == MAXSIZE - 1) {
        return false;
    }
    S.top++;
    S.data[S.top] = x;
    return true;
}

int main() {
    SqStack S;
    S.top = -1; // 初始化栈

    int x;
    cin >> x; // 输入数据

    // 判断栈是否为空并打印结果
    if (isEmpty(S)) {
        cout << "The stack is empty" << endl;
    } else {
        cout << "The stack is not empty" << endl;
    }

    push(S, x); // 入栈

    return 0;
}

需要注意的是,在使用栈前必须先进行初始化,以防止出现未知错误。

你要用栈来存数据,你不先初始化,而先输入数据,那数据存哪呢
你还需要额外的空间先临时存放,再折腾进栈里面?
再说了,初始化只需要一次,而数据是可以输入多次的
你把顺序倒过来,那每输入一个数据就要执行一次初始化?
还是说初始化之前要额外先判断是否曾经录入过数据?
你这么设计图点啥呢