码迷,mamicode.com
首页 > 其他好文 > 详细

ex4.实现一个简单的“栈”

时间:2016-03-06 20:46:30      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#include<stdio.h>
#include<stdlib.h>
typedef int SElemType;
typedef struct{
    SElemType *base;
    SElemType *top;
    int stacksize;
}SqStack;
int InitStack(SqStack &S){
    S.base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
    if(!S.base) exit(-2);
    S.top = S.base;
    S.stacksize = STACK_INIT_SIZE;
    return 1;
}
int GetTop(SqStack S,SElemType &e)
{
    if(S.top == S.base) return -1;
    e = *(S.top-1);
    return 1;
}
int Push(SqStack &S,SElemType e)
{
    if(S.top-S.base >= S.stacksize){
        S.base = (SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
        if(!S.base) exit(-2);
        S.top = S.base + S.stacksize;
        S.stacksize += STACKINCREMENT;
    }
    *S.top++=e;
    return 1;
}
int Pop(SqStack &S,SElemType &e)
{
    if(S.top == S.base)
        return -1;
    e = *--S.top;
    return 1;
}
void Show(SqStack S)
{
    if(S.top == S.base) printf("空栈!\n");
    else{
        SElemType *p = S.top - 1;
        while(p+1!=S.base)
        {
            printf(">%d\n",*p);
            p--;
        }
    }
}
int main()
{
    SqStack s1;
    InitStack(s1);
    Push(s1,5);
    Push(s1,3);
    Push(s1,2);
    int i;
    GetTop(s1,i);
    printf("%d",i);
    printf("------------------\n");
    Show(s1);
}

 

ex4.实现一个简单的“栈”

标签:

原文地址:http://www.cnblogs.com/minemine/p/5248367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!