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) ;
    }



  • 相关阅读:
    RF用户关键字
    RF循环分支
    RF使用
    RF变量
    RF介绍
    元件作用域
    元件介绍
    工作总结之测试
    港股通Level2介绍
    linux中配置yum源
  • 原文地址:https://www.cnblogs.com/MrDing/p/2353353.html
Copyright © 2011-2022 走看看