出入棧順序解析

2021-09-26 08:21:05 字數 709 閱讀 8712

在筆試堆疊知識點中通常會考一道典型的出入棧題型,格式為:

已知按照0,1,2...9的順序入棧,則下面哪個不能為出棧順序?下面來進行分析。

入棧順序:0,1,2,3,4,5,6,7,8,9

出棧情況分析:假如數字5出棧,則代表數字0,1,2,3,4肯定已經入棧,因為5只有入棧了才能出棧。

此時0,1,2,3,4是否已經出棧了呢?我們不清楚,可能其中部分已經出棧。下面來例舉幾種情況。

case1:0,1,2,3,4都沒有出棧,則0-4的出棧順序為43210

case2:數字3已經出棧,則數字5後面的0,1,2,4這四個數字的出棧順序為4210

case3:數字2,4已經在5前面出棧,則在5的後面0,1,3的出棧順序為310

case4:數字134已經在5前面出棧,則5後面0,2的出棧順序為20.

case .....

綜上分析:假如數字5已經出棧,我們無法確定0,1,2,3,4是否已在5的前面出棧,但是能肯定的是01234這幾個數字中還沒有在5前面出棧的某些數字,它們的出棧順序肯定是從大到小。它們可以不完全,但順序肯定不能變,否則就改變了棧的出入棧的規則。為此5後面的數字可以是43210,4210,4210,4310,4320,4321,410,420,432,421,430,等等太多了。

總之,只要記住5後面比它小的數字肯定安裝降序從大到小排列就行了。筆試做題直接用排除法,如果某個大數後面比它小的不是降序排列,就是錯誤的出棧順序。

順序表示的棧 順序棧2 出入棧操作

出棧和入棧 利用順序棧的基本操作,將元素a,b,c,d,e,f,g,h依次入棧,再將棧頂元素即h,g出棧。然後把x,y入棧,最後將元素全部出棧,並依次輸出出棧元素。seqstack.h pragma once include using namespace std define stacksize ...

出入棧應用

以下題目來自leetcode。今天在leetcode學習了資料結構棧,雖然一直知道棧,但是從來沒有實踐過,簡單了解其原理後,看到第一道題目 本文題目二 就懵逼了.然後我就跳過了它,看到題目一,我用不是棧遞減的方法實現了一下成功了。接著開始學習怎麼用棧遞減方法實現,仔細研究了一下,發現真的蠻有意思的。...

棧溢位入門

今天有個同學問我乙個問題 但是這個問題很好分析 我就打算那個來給他 乙個溢位的概念 這裡有個程式 include define password 1234567 int verify password char password void main else 看著源 很容易能看出來這個題的答案是12...