Это начальная часть основной функции, которую я использовал:
int main() {
int q;
struct ListNode* S = NULL;
scanf("%d\n",&q);
int i;
for (i=0;i<q;i++){
int queryType;
scanf("%d", &queryType);
struct NumOp* j;
struct NumOp k;
if(queryType == 1){
double num;
scanf("%lf", &num);
if(num>=1 && num<=100){
k.type='n';
k.num=num;
k.op='\0';
j=&k;
Push(&S,j);
}
}
Теперь проблема в том, что это создаст стек, состоящий из последнего выдвинутого элемента во всех узлах, сдвинутых к этому времени.
После внесения определенных изменений следующий код, похоже, работал нормально. Кто-нибудь может сказать мне, почему это не сработало?
int main() {
int q;
struct ListNode* S = NULL;
scanf("%d\n",&q);
int i;
for (i=0;i<q;i++){
int queryType;
scanf("%d", &queryType);
struct NumOp* j = (struct NumOp*) malloc(sizeof(struct NumOp));
if(queryType == 1){
double num;
scanf("%lf", &num);
if(num>=1 && num<=100){
j->type='n';
j->num=num;
j->op='\0';
Push(&S,j);
}
Объяснение - то, что я ищу.