你好!我是潮倾,今天做的题和栈有关
改了好几遍
心得:1.这道题用的顺序栈,栈顶指针加数组
2.我居然忘了动态申请内存了
3.要看清题中最大n,当时做的时候少了个0
示例1
输入
6 push 1 pop top push 2 push 3 pop
输出
1 error 3
我的代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define max 100002
typedef struct stack{
int top;//栈顶指针
int data[max];
}stack;
void createstack(stack *s)
{
s->top=-1;
}
void push(stack*s,int x)
{
s->top++;
s->data[s->top]=x;
}
void pop(stack *s)
{
if(s->top == -1)
{printf("error\n");}
else {
printf("%d\n",s->data[s->top]);
s->top--;
}
}
void top(stack*s)
{
if(s->top == -1)
printf("error\n");
else {
printf("%d\n",s->data[s->top]);
}
}
int main() {
int n,i=0;
char str[6];
scanf("%d",&n);
stack *s=(stack *)malloc(sizeof(stack));
createstack(s);
for(i=0;i<n;i++)
{
scanf("%s",str);
if(strcmp(str, "push")==0)
{
int x;
scanf("%d",&x);
push(s, x);
}
else if(strcmp(str, "pop")==0)
{
pop(s);
}
else if(strcmp(str,"top")==0)
{
top(s);
}
}
}