首页 > 代码库 > 栈
栈
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OVERFLOW -1 #define OK 1 #define ERROR 0 typedef int Status; typedef int SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize; } SqStack; Status initStack(SqStack &s) { int i; SElemType *p; s.base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!s.base)exit(OVERFLOW); s.top = s.base; p=s.base; s.stacksize = STACK_INIT_SIZE; } Status push(SqStack &s,SElemType e) { int *p; int *i; if(s.top-s.base>=s.stacksize) { s.base=(SElemType *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!s.base)exit(OVERFLOW); s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT; } *s.top++=e; return OK; } Status pop(SqStack &s,SElemType &e) { int *p,*i; if(s.top==s.base)return ERROR; e=*--s.top; return OK; } Status getTop(SqStack s,SElemType &e) { if(s.top==s.base)return ERROR; e=*(s.top-1); printf("%d",e); return OK; } int main() { SqStack s; SElemType e; initStack(s); scanf("%d",&e); push(s,e); getTop(s,e); pop(s,e); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。