zoukankan      html  css  js  c++  java
  • 数据结构.栈

    一、基本概念

    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

  • 相关阅读:
    SAP ALE 事务代码
    jquery插件——仿新浪微博限制输入字数的textarea
    《响应式web设计》读书笔记(五)CSS3过渡、变形和动画
    《响应式web设计》读书笔记(四)HTML5与CSS3
    MySQL 数据类型
    深入理解JavaScript中的this关键字
    SQL Server 存储过程、触发器、游标
    SQL Server 视图
    SQL Server表的创建及索引的控制
    SQL Server 查询语句(二)
  • 原文地址:https://www.cnblogs.com/joeaaron007/p/4315865.html
Copyright © 2011-2022 走看看