怎么用c语言实现一个顺序栈

Python014

怎么用c语言实现一个顺序栈,第1张

char stack[100],s[300]

int i,top=-1

scanf("%s",s)

for(i=0s[i]i++)

{

if(s[i]=='('||s[i]=='['||s[i]=='{')stack[++top]=s[i]

else if(s[i]==')'||s[i]==']'||s[i]=='}')

if(top>=0&&(stack[top]=='('&&s[i]==')'||stack[top]=='['&&s[i]==']'||stack[top]=='{'&&s[i]=='}'))--top

else {printf("error!\n")return 0}

}

if(top==0)printf("OK!\n")

else printf("error!\n")

for(i = s->topi>=0i--) { //遍历栈

printf("%d->",s->data)

}

这里data你定义的是数组名所以

printf("%d->",s->data[i])

求采纳,求经验,求悬赏

希望能解决您的问题。

1. 想通过调用函数改变某个变量的值,必须传递这个变量的地址。也就是在InitStack中申请的内存并没有赋给Main中的s变量,会导致后面的访问出错。改为引用就可以了:

void InitStack(SqStack* &s)//初始化栈

{

s=(SqStack *)malloc(sizeof(SqStack))

s->top=-1

}

2.在"Pop(s,e)", 这个e并没有内存,导致"*e=s->data[s->top]"出错。

需要给它申请内存:

ElemType *e = (ElemType*)malloc(sizeof(ElemType))

最后"free(e)"一下。