zoukankan      html  css  js  c++  java
  • 栈的理解(出、入栈)

    简答题中有这么一道题:

    SX分别表示入栈和出栈的操作,则初态和终态均为栈空的入栈和出栈的操作序列可以表示为仅由SX组成的序列。可以操作的序列为合法,如(SXSX为合法序列,先进后出满足要求,SXXS为非法序列,先进后出,然后再出后进不符合逻辑,所以是非法序列。)

    试给出区分给定序列为合法序列或非法序列的一般准则,并证明:两个不同的合法序列(对同一输入序列,栈操作)不可能得到相同的输出元素序列

    问题分析:好像知道这么个道理,但是不知道怎么说

    解:一般准则是:任何前n个序列中S的个数一定大于X的个数。

    证明:设两个合法序列A,B,假设前n个操作都相同,栈顶元素设为a,第n+1个操作不同,

    A的第n+1个操作为人栈操作,b入栈,则此序列的输出顺序一定是先ba,而B是先将a出栈,再将b入栈,那么此序列的输出顺序一定是先ab,所以两个不同的合法操作的输出序列一定不同。

     

    下面这道题体现了 理解题意的重要性(记得高中的英语老师说:一个人的理解能力是非常重要的,这个能力可以说是一个人的综合能力,也能说明一个人发展的潜力,确实是的,提高自己的理解能力很重要)

    问题描述:

    证明:若借助栈由输入序列1,2,3,。。。N得到的输出序列为p1,p2...pn(它是输入序列的一个排列),则在输出序列不可能有,i<j<k使pj<pk<pi.

    问题分析:刚开始真不知该怎么理解这个题目,自己开始理解,以为题目有问题,认为输出序列可以有这个情况,因为 i<j<k,输出序列当然可以先把pj输出,然后将k入栈,并出栈,然后再将i出栈,所以就会有pj<pk<pi这样的顺序。是不是理解得不够呢?

    看了后有了些理解,有一点我没弄清楚,也没抓住这个关键,还有输入的元素肯定和输出元素是相同的,我刚刚的理解是把这两个给拆分了,也没很理解括号里面的那句话,以为i,j,k是输入,pj,pk,pi为输出,所以才会有上述错误的理解。题目的意思是输入序列是有序的,由pj<pk<pi可知,输入序列pj,pk,pi又因为i<j<k,根据题意,输出的序列应为pi,pj,pk而这就相当于由123要得到312

     

  • 相关阅读:
    2018-04-13Java编程夯实学习心得(3)
    2018-03-28JavaScript学习心得
    2018-03-27mysql学习心得
    JavaScript-作用域
    样式切换图
    购物车结算
    Visual Studio Code快捷键操作
    复选框
    win10锁屏界面无法设置隐藏
    轮播图
  • 原文地址:https://www.cnblogs.com/wj204/p/3044313.html
Copyright © 2011-2022 走看看