(简单数据结构)用数组模拟实现栈栈帧

栈是一种常见的数据结构。用通俗的话来说就像一个箱子,往箱子里放东西最先放进去的最后拿出来,也就是大家说的后进先出,先进后出。最先进来的元素保存在栈的底部依次往上堆积直到栈溢出为止,而取元素时必须自上而下取出元素,想要拿到下面的元素必须先拿出上面的元素。

#pragma once
//1:实现栈和队列
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

typedef int DataType;
#define copacity 100//定义一个copacity给数组一个空间
typedef struct Stack
{
    DataType* _array;//定义数组模拟栈的结构
    size_t _top; //栈底
    size_t _end;//栈顶
}Stack;

// 栈的实现接口 
void StackInit(Stack* s)//栈的初始化
{
    s->_array = (DataType*)malloc(sizeof(DataType)*copacity);//给数组开辟空间
    memset(s->_array, 0, sizeof(DataType)*copacity);//用memset给数组初始化
    s->_top = s->_end = 0;
}
void StackPush(Stack* s, DataType x)//压栈
{
    if (s->_end == copacity)//判断栈是否满了如果满了给栈开辟另外的空间
        s->_array = (DataType *)realloc(s->_array, sizeof(DataType)*copacity);
    s->_array[s->_end] = x;
    s->_end++;
}
void StackPop(Stack* s)//出栈
{
    if (s->_end == s->_top)//如果栈为空返回
        return;
    s->_end--;
}
DataType StackTop(Stack* s)//返回栈底数据
{
    return s->_array[s->_top];
}
size_t StackSize(Stack* s)//求栈的长度
{
    return (s->_end - s->_top);
}
int StackEmpty(Stack* s)
{
    return (s->_top != s->_end);
}
void StackTest1()
{
    Stack s;
    StackInit(&s);
    StackPush(&s, 1);
    StackPush(&s, 2);
    StackPush(&s, 3);
    StackPush(&s, 4);
    StackPop(&s);
    StackPop(&s);
    printf("the top is:%d\n", StackTop(&s));
    printf("the stack size is: %d\n", StackSize(&s));
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值