資料結構 棧的入棧 出棧序列

2021-09-11 06:43:18 字數 709 閱讀 2621

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等

例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。

思路:

每次將入棧序列乙個元素入棧,判斷當前棧頂和出棧序列判斷處(初始化為第乙個元素)是否匹配

若相等,則彈出該元素、同時出棧序列判斷處後移(當然可能一次彈出多個匹配元素)

如不相等,則繼續將入棧序列乙個元素入棧

迴圈結束於 所有入棧序列都訪問完

若棧中還有元素,說明匹配失敗,該出棧序列不可能

class solution {

public:

bool ispoporder(vectorpushv,vectorpopv) {

if(pushv.size()==0)

return false;

vectorstack;//採用vector模擬

for(int i=0,j=0;i採用vector模擬佇列  back()方法取棧頂  pop_back()彈出棧頂 

由入棧 出棧序列求所有出棧 入棧序列

給出乙個陣列,代表入棧順序,求所有出棧可能性?給出乙個陣列,代表出棧順序,求所有入棧可能性?這兩題解法相同,可利用全排列求出所有組合,再進行可能性分析。全排列 如下 public list permute int nums 這種方法是什麼意思呢?例如abc,在第0位有三種可能,axx,bxx,cxx...

PHP實現的棧資料結構示例 入棧 出棧 遍歷棧

利用php物件導向思想,棧的屬性有top 最大儲存數 和儲存容器 這裡利用了php陣列 如下 實現了入棧 出棧 遍歷棧的幾個方法 入棧 public function push ele this stack this top ele 此處必須是 i,先計算再使用 出棧,返回出棧元素 public f...

棧的入棧,出棧,顯示入棧元素

要實現的功能如下 printf t t1.入棧 n printf t t2.出棧 n printf t t3.顯示棧內元素 n define maxsize 5 巨集定義 typedef struct stack 定義棧 void push stack p,int e void printstack...