首页 > 其他 > 详细

栈的函数测试

时间:2019-11-09 19:54:35      阅读:79      评论:0      收藏:0      [点我收藏+]
#include<stdio.h>
#include<stdlib.h>
#define ok 1
#define error 0
#define overflow -2
typedef struct
{
    int *base,*top;
    int stacksize;
}sqstack;

int initstack(sqstack *s)    
{
    s->base=(int *)malloc(10*sizeof(int));                        //预先为s->base所指向的内存空间分配10个int类型的存储空间
    if(!s->base)return overflow;
    s->top=s->base;
    s->stacksize=10;
    return ok;
}

int gettop(sqstack *s,int *e)
{
    if(s->top==s->base)return error;
    *e=*(s->top-1);
    return ok;
}

int pop(sqstack *s,int *e)
{
    if(s->top==s->base)return error;
    *e=*--s->top;
    return ok;
}

int push(sqstack *s,int e)
{
    if(s->top-s->base>=s->stacksize)
    {
        s->base=(int *)realloc(s->base,(s->stacksize+10)*sizeof(int));    //如果栈满,则再次给s->base所指向的内存空间分配10个int类型的存储空间
        if(!s->base)return overflow;
        s->top=s->base+s->stacksize;
        s->stacksize++;
    }
    *s->top++=e;
    return ok;
}

void main()
{
    sqstack *s;
    int i,j;
    initstack(&s);
    push(&s,1);
    push(&s,2);
    push(&s,3);
    push(&s,4);
    push(&s,5);
    push(&s,6);
    push(&s,7);
    push(&s,8);
    push(&s,9);
    push(&s,10);
    push(&s,11);
    push(&s,12);
    push(&s,13);
    push(&s,14);
    push(&s,15);
    i=gettop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
    i=pop(&s,&j);
    printf("i=%d,j=%d\n",i,j);
}

测试函数中定义了四个函数:initstack 构造一个空栈 gettop 获取栈顶元素 push 插入一个元素 pop 弹出栈顶元素

程序运行结果如下:

技术分享图片

i的值表示pop,gettop的返回值,可以发现最后三次i的值为0,表示栈空,j的值也没有发生变化。之前的值都可以正常输出。

栈的函数测试

原文:https://www.cnblogs.com/P201821440033/p/11827324.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!