栈的基本操作
#include<iostream> #include<stdio.h> #include<string.h> #include<malloc.h> using namespace std; typedef struct { int *top; int *base; int stack_size; }stacks; void creat_stack(stacks &a){ a.base=(int *)malloc(100*sizeof(int)); a.top=a.base; a.stack_size=100; } void pop(stacks &s){ if(s.base==s.top){ return ; }else{ s.top--; } } bool isempty(stacks s){ if (s.top==s.base){ return 1; }else { return 0; } } void push(stacks &s,int e){ *s.top=e; s.top++; } int get_top(stacks s){ if (s.top==NULL) return -1; else return *(s.top-1); } int main(){ stacks a; int n,tmp; creat_stack(a); scanf("%d",&n); for (int i=1;i<=n;i++){ scanf("%d",&tmp); if (tmp==get_top(a)){ pop(a); }else { // cout<<"aa"<<endl; push(a,tmp); } } while(!isempty(a)){ printf("%d\n",get_top(a)); pop(a); } return 0; }
有不懂欢迎咨询
QQ:1326487164(添加时记得备注)