zoukankan      html  css  js  c++  java
  • 栈---面试知识点整理

    栈的基本运算

     (1)InitStack(S)

         构造一个空栈S。

     (2)StackEmpty(S)

         判栈空。若S为空栈,则返回TRUE,否则返回FALSE。

     (3)StackFull(S)

         判栈满。若S为满栈,则返回TRUE,否则返回FALSE。

     (4)Push(S,x)

         进栈。若栈S不满,则将元素x插入S的栈顶。

     (5)Pop(S)

         退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素。

     (6)StackTop(S)

         取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态

    堆栈溢出一般是由什么原因导致的?

    (1)可能是由于循环的递归引起的。

    (2)由于分配了过大的局部变量引起。

    表达式3*2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和运算符栈为(),其中^为乘幂

    对象栈:3,2,8;算符栈:*,^,(,-  。

    具体过程:

    第一次:对象栈:3;算符栈:*;

    第二次:对象栈:3,2;算符栈:*,^,(;

    第三次:对象栈:3,2,4;算符栈:*,^,(,+;

    第四次:对象栈:3,2,4,2;算符栈:*,^,(,+,*;

    第五次:对象栈:3,2,4,4;算符栈:*,^,(,+;

    第六次(扫描到6):对象栈:3,2,8;算符栈:*,^,(,-  。

    递归工作栈里面包括返回地址、本层的局部变量和递归调用的形参代换用实参,所以正常情况下,无论递归过程有没有使用局部变量,转换为非递归过程都需要用栈来模拟这个递归调用过程 。当然,有一些特殊递归不用栈就可以直接转换,比如尾递归、常系数递推等,无论是否有局部变量

    n个数顺序(依次)入栈,出栈序列有Cn种,Cn=[1/(n+1)]*(2n)!/[(n!)*(n!)]

    二叉链存储法也叫孩子兄弟法,左指针指向左孩子,右指针指向右兄弟。而中序遍历的顺序是左孩子,根,右孩子。这种遍历顺序与存储结构不同,因此需要堆栈保存中间结果。

    而中序遍历检索二叉树时,由于其存储结构跟遍历顺序相符,因此不需要用堆栈。

    若要删除book表中的所有数据,如下哪些语法是错误的?

    drop table book 是删除整个表,题目的潜在意思是删除表中的数据而并非删除整个表。

    truncate table book 是删除表中的数据,删除速度比delete更快,无法撤回(回退)。

    delete from book  删除数据表中的数据,可以回退,可添加where 子句。

    递归之所以可以采用非递归方法实现是因为可以用栈的方式

    如果你采用递归时 是由系统管理函数栈

    而要写成非递归时必须由你自已来管理一个栈.

    后缀式 ab+cd+/可用表达式( )来表示

    过程如下:

    a入栈

    b入栈

    遇到+号,取栈里的两个操作数,即a和b,计算a+b,结果入栈

    c入栈

    d入栈

    遇到+号,取栈里的两个操作数,即c和d,计算c+d,结果入栈

    遇到/,取栈里的两个操作数,即(a+b)和(c+d),计算( a+b)/(c+d)

    在栈中,栈底指针保持不变,有元素入栈,栈顶指名增加,有元素出栈,栈顶指针减少。在循环队列中,队头指针和队尾指针的动态变化决定队列的长度。在循环链表中,前一个结点指向后一个结点,而最后一个结点指向头结点,只有头结点是固定的。线性链表中,由于前一个结点包含下一个结点的指针,尾结点指针为空,要插入或删除元素,只需要改变相应位置的结点指针即可,头指针和尾指针无法决定链表长度。

    栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作

    栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或“后进先出”表

  • 相关阅读:
    农夫安全第二季课程-3.vmware ESXIv2
    六、表达式:前缀&&后缀
    五、数据类型(1):整数&&带小数点的数
    四、变量和常量
    三、简单的输入输出
    二、第一个C程序:Hello World!
    一、环境的安装Dev-C++
    .Net基础之5——复杂数据类型
    .Net基础之4——流程控制
    .Net基础之3——运算符
  • 原文地址:https://www.cnblogs.com/lxt1105/p/6673453.html
Copyright © 2011-2022 走看看