棧的壓入壓出

2021-06-13 03:34:33 字數 1132 閱讀 2720

何海濤:《劍指offer:名企面試官精講典型程式設計題》:九度oj

題目描述:輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。

輸入:每個測試案例包括3行:

第一行為1個整數n(1<=n<=100000),表示序列的長度。

第二行包含n個整數,表示棧的壓入順序。

第三行包含n個整數,表示棧的彈出順序。

輸出:對應每個測試案例,如果第二個序列是第乙個序列的彈出序列輸出yes,否則輸出no。

樣例輸入:

5
1 2 3 4 5
4 5 3 2 1
5
1 2 3 4 5
4 3 5 1 2

樣例輸出:

yes
no

**ac:

思想:掃瞄 + 入棧 + 彈棧:當前的輸出==棧頂元素,彈棧,若當前輸出的不是棧頂元素,那麼就要將元素入棧直到此元素,如果入棧中沒有發現此元素,那麼就是錯誤的序列。

#include #include int main()

for( i = 0; i < n; i++ )

top = -1;

i = 0;

j = 0;

flag = 1;

while( stack1[i] != stack2[j] )

}if( !flag )

i++;

j++;

while( j < n )

else

}else

if( f )

}if( flag )

}if( !flag )

}if( !flag )

printf("yes\n");

}return 0;

}

棧的壓入彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓棧序列,序列4,5,3,2,1是該棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。解答 可以用乙個輔助的棧來儲存入...

棧的壓入 彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,判斷兩個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1 2 3 4 5是某棧的壓棧序列,序列4 5 3 2 1是該壓棧序列對應的乙個彈出序列,但4 3 5 1 2就不可能是該壓棧序列的彈出序列。bool ispoporder cons...

棧的壓入彈出序列

1.問題描述 輸入兩個整數序列,第乙個序列表示棧的壓入序列,請判斷第二個序列是否為該棧的彈出序列。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓棧序列,序列4,5,3,2,1是該棧序列對應的乙個彈出序列,但 4,3,5,1,2,就不可能是該壓棧序列的彈出序列。來自 劍指offer...