判斷操作是否合法(棧)

2021-07-11 02:40:58 字數 888 閱讀 2758



假設以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...