普通栈

来源:互联网 发布:2016淘宝女装店名 编辑:程序博客网 时间:2024/04/28 19:57
#include <stdio.h>#include <stdlib.h>#define N 3struct stack{int stacksize;char * base;char * top;};int init(struct stack * s){s->base = (char *)malloc(N * sizeof(char));s->top=s->base;s->stacksize=N;return 0;}int push(struct stack * s,char elem){if(s->top-s->base<N){*(s->top)=elem;s->top++;printf("%c入栈!\n",elem);return 0;}else{printf("栈满!入栈失败!\n");return -1;}}int pop(struct stack * s){if(s->top==s->base){printf("栈空!删除失败!\n");return -1;}s->top--;printf("%c出栈!\n",*(s->top));return 0;}int getTop(struct stack * s){if(s->top==s->base){printf("栈空!获取栈顶元素失败!\n");return -1;}printf("当前栈顶元素为:%c\n",*(s->top-1));return 0;}int getLength(struct stack * s){return s->top-s->base;}void display(struct stack * s){if(s->top==s->base){printf("栈空!获取栈顶元素失败!\n");return;}printf("当前栈中所有元素为");int i=1;while(i<=s->top-s->base){printf("%c ",*(s->top-i));i++;}printf("\n");}int main(){struct stack * s;s=(struct stack *)malloc(sizeof(struct stack));init(s);push(s,'a');push(s,'b');push(s,'c');getTop(s);display(s);push(s,'d');printf("当前栈的长度为:%d\n",GetLength(s));pop(s);pop(s);pop(s);pop(s);return 0;}

0 0