zoukankan      html  css  js  c++  java
  • 二、栈

    栈,是一个先进后出的线性表。

    最开始栈中不含有任何数据,叫做空栈,此时栈顶就是栈底。

    线性表有两种存储形式,及顺序表存储和链表存储。一般的栈是用顺序表的形式实现的

    定义一个顺序栈

    typedef struct
    {
    ElemType *base;
    ElemType *top;
    int stacksize;
    }sqStack;


    创建一个栈

    initStack(sqStack *s)
    {
    /*内存中开辟一段连续空间作为栈空间,首地址赋值给s->base*/
    s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
    if(!s->base) exit(0); /*分配空间失败*/
    s->top = s->base; /*最开始,栈顶就是栈底*/
    s->stacksize = STACK_INIT_SIZE; /*最大容量为STACK_INIT_SIZE */
    }

    入栈

    Push(sqStack *s, ElemType e)
    {
    if(s->top - s->base >= s->stacksize){
    /*栈满,追加空间*/
    s->base = (ElemType *)realloc(s->base, (s->stacksize +
    STACKINCREMENT)*sizeof(ElemType));
    if(!s->base) exit(0); /*存储分配失败*/
    s->top = s->base + s->stacksize;
    s->stacksize = s->stacksize + STACKINCREMENT; /*设置栈的最大容量*/
    }
    *(s->top) = e; /*放入数据*/
    s->top++;
    }

    出栈

    Pop(sqStack *s , ElemType *e)
    {
    if(s->top == s->base) return;
    *e = *--(s->top);
    }



    栈的长度

    int StackLen(sqStack s)
    {
    return (s.top - s.base) ;
    }



  • 相关阅读:
    域控软件分发
    win2008 ad域控搭建
    tomcat部署web项目的三种方式
    sql server2008数据库迁移的两种方案
    WinServer2008R2远程桌面长时间保持连接
    Windows2012R2备用域控搭建
    主备 主从 主主模式
    excel中汉字转拼音
    正向代理与反向代理
    18-09-11 软件rpm yum rm卸载 和批量删除
  • 原文地址:https://www.cnblogs.com/MrDing/p/2353353.html
Copyright © 2011-2022 走看看