浙大PTA堆疊操作合法性

2021-10-05 03:55:45 字數 1427 閱讀 3526

假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行(如沒有出現刪除時棧空)且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。

輸入格式:

輸入第一行給出兩個正整數n和m,其中n是待測序列的個數,m(≤50)是堆疊的最大容量。隨後n行,每行中給出乙個僅由s和x構成的序列。序列保證不為空,且長度不超過100。

輸出格式:

對每個序列,在一行中輸出yes如果該序列是合法的堆疊操作序列,或no如果不是。

輸入樣例

4 10

sssxxsxxsx

sssxxsxxs

ssssssssssxss*********xx

sssxxs***

輸出樣例:

yesno

nono

思路:遇到s則入棧;遇到x則出棧。入棧操作注意判斷棧是否已經滿,出棧操作注意棧是否為空,再判斷最後棧的狀態,即可

#include

using

namespace std;

typedef

struct snode * stack;

struct snode

;stack creatstack

(int n)

;//建立乙個堆疊

bool

push

(stack s,

char x)

;//入棧

bool

pop(stack s)

;//出棧

bool

isempty

(stack s)

;//判斷棧是否為空

bool

isfull

(stack s)

;//判斷棧是否已滿

intmain()

else

if(str[i]

=='s')if

(!flag)}if

(bj ==1)

continue

;else

else

printf

("no\n");

}}return0;

}stack creatstack

(int n)

bool

push

(stack s,

char x)

}bool

pop(stack s)

}bool

isempty

(stack s)

bool

isfull

(stack s)

PTA 堆疊操作合法性

題目要求 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入格式 輸入第一行給出兩個正整數n和m,其中n是待測序列的...

堆疊操作合法性

題目描述 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入格式 輸入第一行給出兩個正整數n和m,其中n是待測序列的...

堆疊操作合法性

堆疊操作合法性 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入第一行給出兩個正整數n和m,其中n是待測序列的個數...