一个数组,双指针
#include<string.h>
#include <stdio.h>
#define MAX 100000
// 定义一个栈
typedef struct Queue{
int a[MAX];
int head;
int tail;
}*queue;
// 初始化
void initStack(queue s){
s->head = 0;
s->tail = 0;
}
// 进入函数
void push(queue s, int x){
s->a[s->tail] = x;
s->tail++;
}
// 出栈
int pop(queue s){
if(s->head==s->tail){
return -1;
}
return s->a[s->head++];
}
// 输出栈顶,栈顶不出栈
int front(queue s){
if(s->head ==s->tail){
return -1;
}
return s->a[s->head];
}
int main(){
queue s = (queue)malloc(sizeof(struct Queue));
initStack(s);
int n = 0;
scanf("%d",&n);
while(n--){
// 判断是push pop 还是top
char *str = (char*)malloc(6*sizeof(char));
//int strcmp(const str s1,const str s2) ,如果s1>s2返回<0// s1>s2 return >0 s1 = s2 return 0;
scanf("%s",str);
if(!strcmp(str,"push")){
int num = 0;
scanf("%d",&num);
push(s,num);
}
if(!strcmp(str,"pop")){
int num1 = pop(s);
if(num1 ==-1){
printf("error\n");
continue;
// 直接进入下一次循环
}
printf("%d\n",num1);
}
if(!strcmp(str,"front")){
int num2 = front(s);
if(num2 ==-1){
printf("error\n");
continue;
// 直接进入下一次循环
}
printf("%d\n",num2);
}
}
return 0;
}