• 二、栈


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

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

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

    定义一个顺序栈

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



  • 相关阅读:
    Map集合的四种遍历
    java 请求 google translate
    Linux 内核初级管理
    Linux GRUB
    Linux 系统启动流程
    Linux 任务计划 crontab
    Linux 进程管理工具
    Linux sudo实作
    Linux 进程管理
    Linux 网络配置命令:ip、ss
  • 原文地址:https://www.cnblogs.com/MrDing/p/2353353.html
Copyright © 2020-2023  润新知