我正在尝试使用数组创建堆栈。我已经完成了所有必要的功能,并且控制台中没有错误。
printf
中displayStack()
的输出是
ê @² ` Ç i i q @╨ @. ` Ç x
我该如何解决?
我的代码是:
#include <stdio.h>
#include <stdlib.h>
struct Stack {
int top;
char array[];// Array for stack which will store the operators from infx
};
void createStack(struct Stack st){
st.top=-1;
}
void push(struct Stack st,char ch)
{
st.top++;
st.array[st.top]=ch;
}
void displayStack(struct Stack st){
int i;
for (i=st.top;i>=0;i--){
printf("%c\n",st.array[i]);
}
}
char pop(struct Stack st){
char x='x';
if(st.top<0){
printf("Stack UnderFlow\n");
}else{
x= st.array[st.top];
st.top--;
}
return x;
}
int main()
{
struct Stack st;
createStack(st);
push(st,'x');
push(st,'x');
push(st,'x');
push(st,'x');
push(st,'x');
push(st,'x');
displayStack(st);
pop(st);
return 0;
}
答案 0 :(得分:1)
这里:
struct Stack {
int top;
char array[];
};
array
可以用作flexible array member,但是您需要malloc
的大小为struct
+要在数组中使用的元素数,即:
data = malloc(sizeof(*data) + nelements);
否则,编译器将不知道要与数组关联多少个元素