堆栈初始化,POP,PUSH()

来源:互联网 发布:网络流行语大全 编辑:程序博客网 时间:2024/05/18 03:02
#include "stdio.h"#include "stdlib.h"#include "string.h"#define init_stacksize 100#define extra_stacksize 10typedef enum{    error=0,    success=1}STATUS;//typedef struct//{//    int i//堆栈内元素格式//}SElemType;typedef int SElemType;typedef struct{    SElemType *base;//栈底指针    SElemType *top;//栈顶指针    int stacksize;//堆栈当前长度}Sqstack;//指示堆栈信息,每个堆栈仅需一个Sqstack *createstack(Sqstack *stack){    stack->base=(SElemType*)malloc(init_stacksize*sizeof(SElemType));    memset(stack->base,0,sizeof(init_stacksize*sizeof(SElemType)));    //if(!stack->base) return error;    stack->top=stack->base;    stack->stacksize=init_stacksize;    return stack;}STATUS push(Sqstack *stack,int a){    if((stack->top-stack->base)>=stack->stacksize)//堆栈满    {        stack->base=(SElemType*)realloc(stack->base,(stack->stacksize+extra_stacksize)*sizeof(SElemType));        if (!stack->base) return error;        stack->top=stack->base+stack->stacksize;        stack->stacksize+=extra_stacksize;    }//    (stack.top++)->i=a;*stack->top++=a;    return success;}//int ae;SElemType pop(Sqstack *stack){    SElemType ae;    //if(stack->base==stack->top) return error;//    ae=(--stack.top)->i;ae=*(--stack->top);    return ae;}int main(){    int i;    Sqstack *stack1;    stack1=(Sqstack*)malloc(sizeof(Sqstack));    stack1=createstack(stack1);    push(stack1,5);    push(stack1,5);    push(stack1,3);    push(stack1,1);//    for(i=1;i<5;i++)//    push(stack1,i);    for(i=1;i<5;i++)    printf("%d",pop(stack1));}
未完成版,栈满情况和空栈情况还未想出规范表达
0 0
原创粉丝点击