• 数据结构.栈


    一、基本概念

    1.栈是限定仅在表尾(栈顶)进行插入和删除操作的线性表;

    2.栈:后进先出(LIFO),适用于撤销操作

    二、存储结构

    1.栈的顺序存储结构:

    1)数组的首元素作栈底

    2)两栈共享空间

    2.栈的链式存储结构:

    链栈不需要头结点

    三、栈的应用:

    1.经典递归例子:斐波那契数列

    递归函数:直接调用自己或通过一系列的调用语句间接调用自己的函数。

    每个递归定义必须至少有一个条件,满足时递归不再进行,即不再引用自身而是返回值退出。 (迭代使用的是循环结构,递归使用的是选择结构)

    2.栈的应用——四则运算表达式求值:

    后缀表达式:所有符号都是在要运算数字的后面出现。

    代码示例:

     1 ///Name:Stack
     2 ///Author:JA
     3 ///Date:2015-3-4
     4 
     5 
     6 
     7 ///算术表达式求值的算符优先算法。设OPTR和OPND分别为运算符栈和运算数栈,
     8 ///OP为运算符集合。
     9 OperandType EvaluateWxpression(){
    10     InitStack(OPTR); Push(OPTR, '#');
    11     InitStack(OPND); c = getchar();
    12     while (c != '#' || GetTop(OPTR) != '#'){
    13         if (!In(c, OP)){ Push(OPND, C); c = getchar(); }
    14         else
    15             switch (Precede(GetTop(OPTR), c)){
    16             case'<':    //栈顶元素优先权低
    17                 Push(OPTR, c); c = getchar();
    18                 break;
    19             case'=':   //脱括号并接收下一字符
    20                 Pop(OPTR, x); c = getchar();
    21                 break;
    22             case'>':    //出栈并将运算结果入栈
    23                 Pop(OPTR, theta);
    24                 Pop(OPND, b); Pop(OPND, a);
    25                 Push(OPND, Operate(a, theta, b);
    26                 break;
    27         }//switch
    28     }//while
    29     return GetTop(OPND);
    30 }//EvaluateExpresssion
    31 
    32 ///n阶汉诺塔问题
    33 void hanoi(int n, char x, char y, char z){
    34     if (n = 1)
    35         move(x, 1, z);                //将编号为1的圆盘从x激至z
    36     else{
    37         hanoi(n - 1,x,z,y);           //将x上编号为1至n-1的圆盘移到y,z作辅助塔
    38             move(x, n, z);           //将编号为n的圆盘从x激至z
    39         hanoi(n - 1, y, x, z);        //将y上编号为1至n-1的圆盘移到z,x作辅助塔
    40     }
    41 }
    View Code

  • 相关阅读:
    Ubuntu Server 18.04上安装fail2ban
    Spring Security实现用户名密码登录
    Spring Boot集成H2数据库
    2019年过去了,我很怀念它
    基于Spring Boot的统一异常处理设计
    Git推送到多个远程仓库
    广州商学院16级软工一班&二班-助教总结
    记一次返工之后记
    广州商学院16级软工一班&二班-第四次作业成绩
    广州商学院16级软工一班&二班-第三次作业成绩
  • 原文地址:https://www.cnblogs.com/joeaaron007/p/4315865.html
Copyright © 2020-2023  润新知