数据结构篇-栈BOOS关卡简介

目录

一、学习目标

二、基本概念

链式栈:

初始化:

顺序栈:

四、总结


一、学习目标

  • 知识点:
    • 一文掌握数据结构的栈概念

二、基本概念

        栈是一种逻辑结构,是特殊的线性表。特殊在:

  • 只能在固定的一端操作

        只要满足上述条件,那么这种特殊的线性表就会呈现一种“后进先出, 先进后出”的逻辑,这种逻辑就被称为栈。栈在生活中到处可见,比如堆叠的盘子、电梯中的人们、嵌套函数的参数等等。

        由于约定了只能在线性表固定的一端进行操作,于是给栈这种特殊的线性表的“插入”、“删除”,另起了下面这些特定的名称:

  • 栈顶:可以进行插入删除的一端
  • 栈底:栈顶的对端
  • 入栈:将节点插入栈顶之上,也称为压栈,函数名通常为push()
  • 出栈:将节点从栈顶剔除,也称为弹栈,函数名通常为pop()
  • 取栈顶:取得栈顶元素,但不出栈,函数名通常为top()

        基于这种固定一端操作的简单约定,栈获得了“后进先出”的基本特性,如下图所示,最后一个放入的元素,最先被拿出来:

链式栈:

// 链式栈节点
typedef struct node
{
    datatype data;
    struct node *next;
}node;

// 链式栈管理结构体
struct linkStack
{
    node *top; // 链式栈栈顶指针  (链表头)
    int  size; // 记录链式栈当前元素个数
};

初始化

P_Node NewNode( DataType * NewData )
{
    // 申请链表节点
    P_Node New = calloc( 1 , sizeof(Node) );

    // 初始化链表节点
    if (NewData)
    {
        memcpy( &New->Data , NewData , sizeof(DataType));
    }
    
    New->Next = NULL ;

    return New ;
}

P_Stack InitStack( void )
{
    // 申请管理结构体
    P_Stack stack = calloc(1, sizeof(Stack));

    // 初始化管理结构体结构体
        // 入口地址
            // 初始化链表
    stack->p_stack = NewNode( NULL );

        // 数量
    stack->Size = 0 ;

    return stack ;
}

顺序栈:

四、总结

        本文介绍了数据结构栈概念,理解本文所有知识点后,便可打败其中的小怪,拿下经验值~

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡丘. 钦爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值