Мой кодпечати элементы стека
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node {
char ch;
struct node *next;
};
struct node *first,*top1,*newptr;
void push_back(char data) { //Pushes data into the stack
if (first == NULL) {
first = new node();
first->next = NULL;
first->ch = data;
}
else {
first = new node();
top1->next = first;
top1->ch = data;
first = top1;
}
}
void display() {
top1 = first;
if (top1 == NULL){
printf("Stack is empty");
return;
}
while (top1 != NULL){
printf("%c ", top1->ch);
top1 = top1->next;
}
}
main() {
first = NULL;
char EXP[100];
scanf("%s",&EXP);
system("cls");
int len = strlen(EXP);
for(int i=0;i<len;i++)
push_back(EXP[i]);
display();
system("pause");
}
Моя программа должна получить строку пользователя, а затем каждый символ будет помещен в стек, и я бы напечатать строку назад. Когда я запускаю свой код, он мог отображать только первый символ. Я что-то упускаю?
Этот код не является C. У вас в нем 'новый'. И все же каким-то образом ваш компилятор справляется с тем, чтобы не отклонять 'main()' без возвращаемого значения. Кстати, 'scanf ("% s ", &EXP);' является неопределенным поведением, потому что они несовместимые типы. –
но он должен был получить строку от пользователя, что несовместимо с этим? –
Просто удалите амперсанд. –