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



  • 相关阅读:
    百度Hi之CSRF蠕虫攻击
    Portlet之讲解
    try-catch语句讲解
    unset之讲解
    MySQL bin-log 日志清理方式
    php数组array_push()和array_pop()以及array_shift()函数
    php中的func_num_args、func_get_arg与func_get_args函数
    PHP is_callable 方法
    如何实现php异步处理
    Mysql并发时经典常见的死锁原因及解决方法
  • 原文地址:https://www.cnblogs.com/MrDing/p/2353353.html
Copyright © 2011-2022 走看看