求助,不知道错那里了。

来源:互联网 发布:it监控 编辑:程序博客网 时间:2024/05/06 15:11

初学栈,便写了一个顺序栈的操作,但不知道那里错了,求帮助啊···········

希望大神能帮助,帮助小白,感谢感谢。。。。。

#include<stdio.h>#include<stdlib.h>#define MAXSIZE 40  //最大空间#define ADDSIZE 40//增加的空间#define SORRY 0#define OK 1//顺序栈typedef struct stack{    int *top;//栈顶    int *base;//栈底    int nowsize;//当前大小}sqstack;//initstackint initstack(sqstack &s){    s.base=(int*)malloc(MAXSIZE*sizeof(int));    if(!s.base)        exit(SORRY);    else        {            s.base=s.top;            exit(OK);        }        s.nowsize=MAXSIZE;    return 0;}//Gettop//返回栈顶元素int gettop(sqstack &s){    int *e;    if(!s.base)        exit(SORRY);    else    {        e=s.top--;        printf("%d",*e);    }    return 0;}//Push//插入一个元素为栈顶元素int PUSH(sqstack &s,int e){    if(s.top-s.base>=s.nowsize)//判断栈满        s.base=(int*)realloc(s.base,(s.nowsize+ADDSIZE)*sizeof(int));    if(!s.base)            exit(SORRY);    else    {        s.top=s.base+s.nowsize;        s.nowsize=s.nowsize+ADDSIZE;    }    *s.top=e;    s.top++;    return 0;}//pop//删除栈顶元素int POP(sqstack &s){    int e;    if(s.top==s.base)        exit(SORRY);    else        e=*--s.top;        return e;}int main(){    sqstack A;    initstack(A);    printf("IN:\n");    int i=0,m=0;    for(i=0;i<5;i++)//入栈    {        scanf("%d",&m);        PUSH(A,m);    }    printf("OUT:\n");    for(i=0;i<5;i++)    {        printf("%d",POP(A));    }    return 0;}

原创粉丝点击