題目: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,有關入棧和出棧的操作演算法。關鍵字 共享棧 棧頂相向 迎面增長 思路 兩個棧共享向量空間,將兩個棧的棧底設在向量兩端,初始時,...