假設以i和o分別表示進棧和出棧操作,棧的初態和終態均為空,進棧和出棧的操作序列可表示為僅由i和o組成的序列。
順序棧的定義為
typedef struct
sqstack;
編寫乙個演算法,判斷棧中的序列是否合法!若合法則返回1,否則返回0.
需編寫的演算法為:
int judge(sqstack *s);
輸入為乙個字串,表示進棧出棧的操作序列,該序列儲存在棧中。
若操作序列合法則輸出「yes」,否則輸出"no"。
問題分析:指定乙個序列,掃瞄這個序列任何位置時,o的個數(出棧次序)都小於i的個數(入棧次序),若大於,則不合法序列,整個序列都掃瞄後,o的個數都應該等於i的個數,否則為不合法序列。
**如下:
int judge(sqstack *s)
}if(j==k)
return 1;
else
return 0;
}全部**:
#include
#include
#include
#define sizemax 105
typedef char elemtype;
typedef struct
sqstack;
void initstack(sqstack *&s)
bool push(sqstack *&s,elemtype c)
int judge(sqstack *s)
break;}}
if(j!=k)
return 0;
else
return 1;
}void destroystack(sqstack *&s)
int main()
判斷操作是否合法A
time limit 1 sec memory limit 128 mb submit 44 solved 14 submit status web board 假設以i和o分別表示進棧和出棧操作,棧的初態和終態均為空,進棧和出棧的操作序列可表示為僅由i和o組成的序列。順序棧的定義為 typedef...
Problem A 判斷操作是否合法(棧和佇列)
time limit 1 sec memory limit 128 mb submit 67 solved 22 假設以i和o分別表示進棧和出棧操作,棧的初態和終態均為空,進棧和出棧的操作序列可表示為僅由i和o組成的序列。順序棧的定義為 typedef struct sqstack 編寫乙個演算法,...
判斷出棧序列是否合法
問題描述 對於乙個棧,已知元素的進棧序列,判斷乙個由棧中所有元素組成的排列是否是可能的出棧序列。比如,進棧序列為1 2 3 4,則可能的出棧序列有4 3 2 1,1 4 3 2等。而1 4 2 3就不是。輸入形式 從標準輸入讀取第一行是乙個整數n 3 n 10 代表有n個元素,其進棧序列是1 2 3...