zoukankan      html  css  js  c++  java
  • 栈的使用

    一、什么是栈?

    这篇文章所言的栈是一种数据结构,不要与栈区混淆。数据结构中的栈是一种线性表,特点是只允许在表头进行数据的插入和删除,也就是数据遵循先进后出的原则,一般把一端称为栈顶(top),另一端称为栈底(base)。

    二、栈的基本操作

    对栈的基本操作只有两种,一种是入栈(push),一种是出栈(pop)。

    1、入栈(push)

    即将数据保存在栈顶,操作前先将栈顶(top)指针移向下一个位置,从图里看就是将top箭头上移,之后将数据保存在指针所指位置。

    2、出栈(pop)

    即将保存在栈顶的数据输出,然后修改栈顶指针使之移向上一个位置,从图里看就是将top箭头下移。

    三、两种常用的栈
    1、顺序栈
    使用连续的内存空间模拟栈的空间,一般使用数组来实现,数组索引为0即为栈底,其次再定义一个变量储存栈顶位置即可,这种栈实现起来比较简单容易操作,适合初学者。

    2、链式栈
    使用零散的内存空间模拟栈的空间,一般使用链表1来实现,链表尾部即为栈底,链表头部即为栈顶

    四、实现步骤

    1、定义栈结构

    typedef struct stack 
    {
      int *base;
      int *top;
    } Stack;

    2、初始化栈

    void initStack(Stack *Sta)
     {
      Sta->base = (int *) malloc(100 * sizeof(int));//这里申请了100个int的大小 可以根据需求更改
      Sta->top = Sta->base;
    }

    3、入栈操作

    void push(Stack *Sta, int ele) 
    {
      Sta->top++;
      *(Sta->top) = ele;
    }

    4、出栈操作

    int pop(Stack *Sta)
     {
      int temp;
      temp = *(Sta->top);
      Sta->top--;
      return temp;
    }

    5、释放内存

    void freeStack(Stack *Sta) 
    {
      free(Sta);
    }

    转载: https://blog.csdn.net/holycipher/article/details/52782396

    111
  • 相关阅读:
    取多列数据的最大值、最小值sql
    java中实现时间差的计算
    数据更新sql
    自连接的用法sql
    获取第一条,最后一条数据sql
    复制表结构 表数据sql
    用 ORDER BY 生成“排序”列sql
    表之间的数据匹配(生成交叉表)sql
    SIP呼叫流程
    如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
  • 原文地址:https://www.cnblogs.com/zwj-199306231519/p/12787731.html
Copyright © 2011-2022 走看看