假設以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是待測序列的個數...