栈的操作
#include<iostream.h> #include<stdlib.h> #include<stdio.h> #include<malloc.h> #define STACK_INIT_SIZE 5 #define STACKINCREMENT 1//宏定义 typedef struct{ int *base; int *top; int stacksize; }sqstack;//实现栈的结构体 InitStack(sqstack &s) { s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int)); if(!s.base) return (1); else s.top =s.base; s.stacksize=STACK_INIT_SIZE; return 0; }//构造空栈的函数 int Push(sqstack &s,int i) { if(s.top-s.base>=s.stacksize) { s.base=(int *)realloc(s.base,(s.stacksize+STACK_INIT_SIZE)*sizeof(int)); if(!s.base) exit (1); else { s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT; } } else *s.top++=i; return 0; }//插入元素i为新的栈顶元素的函数 int Pop(sqstack &s,int &i) { if(s.top==s.base) return (1); else i=*--s.top; return 0; }//栈顶元素弹出函数 void main() { int ret,ret1,ret2,j,k=0,k1; char reply='s'; sqstack s1; ret=InitStack(s1); if(!ret) { for(int l=0;l<4;l++) { cout<<"please enter a number you want to bulid a stack:"<<endl; cin>>j; ret1=Push(s1,j); if(!ret1) cout<<"push succeed!"<<endl; cout<<"j="<<j; k++; } do { //for(int l=0;l<5;l++) //{ cout<<"please enter a number you want to bulid a stack:"<<endl; cin>>j; ret1=Push(s1,j); if(!ret1) cout<<"push succeed!"<<endl; cout<<"j="<<j<<endl; k++; //} cout<<"do you want to contiue?'y/n'"<<endl; cin>>reply; } while(reply!='n'); cout<<k<<endl; cout<<"break"<<endl; for(k1=k;k1!=0;k1--) { cout<<"j="<<j; ret2=Pop(s1,j); if(ret2==0) cout<<"pop succeed !"<<endl; else cout<<"pop error"<<endl; } } else cout<<"error"<<endl; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论