#include <STdio.H> #include <STRING.H> #include <STDLIB.H> typedef struct SeqStack { int length; int top; char *data; }seqstack; seqstack* CreatStack(seqstack *s,int n) { s=(seqstack *)malloc(sizeof(seqstack)+n*sizeof(char)); if(s==NULL) return NULL; memset(s,sizeof(seqstack)+n*sizeof(char)); s->length=n; s->top=0; s->data=(char *)(s+1); return s; } int StackEmpty(seqstack *s) { if(s->top==0) return 1; else return 0; } int GetTop(seqstack *s,char *e) { if(s->top==0) return -1; *e=s->data[(s->top)-1]; return 0; } int PushStack(seqstack *s,char e) { if(s->top==s->length) return -1; s->data[s->top]=e; s->top+=1; return 0; } int PopStack(seqstack *s,char *e) { *e=s->data[s->top-1]; s->top-=1; return 0; } int StackLength(seqstack *s) { return s->top; } void InitStack(seqstack *s) { s->top=0; } void destroyStack(seqstack *s) { free(s); } int main() { seqstack *s=NULL; int i; char e=65; s=CreatStack(s,10); printf("%d\n",StackEmpty(s)); for(i=0;i<s->length;i++) { PushStack(s,65+i); GetTop(s,&e); printf("%c,",e); } printf("\n"); printf("%d\n",StackEmpty(s)); for(i=0;i<s->length;i++) { PopStack(s,e); } printf("\n"); printf("%d\n",StackEmpty(s)); destroyStack(s); return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。