小白演算法積累 棧1 判斷合法操作序列

2021-10-03 04:37:11 字數 651 閱讀 9650

題目:i:入棧,o:出棧。寫出乙個演算法,判定所給的操作序列是否合法。合法要求:棧的初態和終態均為空。若合法,返回true,否則返回false(假定被判定的操作序列已存入一維陣列中)

關鍵字:判斷入棧出棧操作序列是否合法

思路

入棧:無論多少次,只要記憶體足夠,就可以進行

#限制:記憶體足夠

出棧:必須保證棧非空才能進行出棧操作

#限制:棧非空,即每時每刻,出棧的總次數都應小於等於入棧的總次數

終態為空:入棧總次數=出棧總次數

1)依次逐一掃瞄入棧出棧序列(即由「i」和「o」),

每掃瞄至任一位置均需檢查出棧次數(即「o」的個數)是否小於等於入棧次數(即「i」的個數)

若大於,則為非法序列。

需要變數:字元陣列a[i],i的計數:j,o的計數:k

2)掃瞄結束後,再判斷總的入棧次數和出棧次數是否相等

若不相等,則為非法序列。

需要變數:

int

judge

(char a)

} i++;}

if(j!=k)

else

}

判斷操作是否合法(棧)

假設以i和o分別表示進棧和出棧操作,棧的初態和終態均為空,進棧和出棧的操作序列可表示為僅由i和o組成的序列。順序棧的定義為 typedef struct sqstack 編寫乙個演算法,判斷棧中的序列是否合法!若合法則返回1,否則返回0.需編寫的演算法為 int judge sqstack s 輸入...

Problem A 判斷操作是否合法(棧和佇列)

time limit 1 sec memory limit 128 mb submit 67 solved 22 假設以i和o分別表示進棧和出棧操作,棧的初態和終態均為空,進棧和出棧的操作序列可表示為僅由i和o組成的序列。順序棧的定義為 typedef struct sqstack 編寫乙個演算法,...

小白演算法積累 棧2 共享棧 棧頂相向 迎面增長

題目 設有兩個棧s1,s2都採用順序棧方式,並共享乙個儲存區 0,maxsize 1 為了盡量利用空間,減少溢位的可能,可採用棧頂相向 迎面增長的儲存方式。試設計s1,s2,有關入棧和出棧的操作演算法。關鍵字 共享棧 棧頂相向 迎面增長 思路 兩個棧共享向量空間,將兩個棧的棧底設在向量兩端,初始時,...