首页 > 其他 > 详细

栈的顺序表的实现

时间:2020-12-19 00:00:35      阅读:34      评论:0      收藏:0      [点我收藏+]
栈的顺序表的实现
# 栈的顺序表的实现
#include<stdio.h>
#include<stdio.h>
typedef int STDataType;
//顺序表结构实现
typedef struct stack
{
    STDataType* _data;
    int _size;
    int _capacity;
}stack;
void stackInit(stack* st)
{
    if (!st)return;
    st->_data = NULL;
    st->_size = 0;
    st->_capacity = 0;
}
void checkCapacity(stack* st)
{
    if (st->_size == st->_capacity)
    {
        int newCapacity = st->_capacity == 0 ? 1 : 2 * st->_capacity;
            st->_data = (STDataType*)realloc(st->_data, sizeof(STDataType)*newCapacity);
            st->_capacity = newCapacity;
    }
}
void stackPush(stack* st, STDataType val)
{
    if (st == NULL)return;
    checkCapacity(st);
    //尾插
    st->_data[st->_size++] = val;
}
//出栈
void stackPop(stack* st)
{
    if (!st)return;
    //尾删
    if (st->_size>0)
    st->_size--;

}
STDataType stackTop(stack* st)
{
    return st->_data[st->_size - 1];
}
void test()
{
    stack s;
    stackInit(&s);
    stackPush(&s, 1);
    stackPush(&s, 2);
    stackPush(&s, 3);
    stackPush(&s, 4);
    for(int o = 0; o < 4; ++o)
    {
        printf("%d  ", stackTop(&s));
        stackPop(&s);
    }
    printf("\n");
}
int main()
{
    test();
    return 0;
}

栈的顺序表的实现

原文:https://blog.51cto.com/14982125/2567236

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