模擬棧的入棧和出棧,根據較大的數先出棧, 比它小的數必須由大到小出棧,但不一定連續出棧
如: 3 2 1 5 4 或者 3 2 5 4 1 ————3先出棧,2和1必須由大到小出棧,他們可以連續出棧也可以在中間隔著幾個數,但1在2前出棧坑定是不行的,如 3 1 2 5 4 或3 1 5 4 2,這都是不合理的順序
這裡使用了之前學習棧編寫的stack類
當然你也可以c++自帶的,在開頭加#include ,如宣告乙個int型別的棧 stacks; 具體使用可看看這
#include#include#include using namespace std;
templateclass stack
//析構函式
~stack()
//入棧
bool push(const type &element)
//棧頂向上移,並賦值
top_index++;
elements[top_index] = element;
return true;
} //出棧
bool pop()
//棧頂向下移
top_index--;
return true;
} //獲取棧頂元素
type top()else
} //判斷棧是否為空
bool empty()else
}};int main()
for (i = 0; i = minimum)
//還要更新還沒壓入棧的最小的序號,要加1,因為p[i]已經壓進去了
minimum = p[i] + 1;
}else
} //出棧(經過上面的if,else,能保證出棧順序能像自己手動輸入一樣[如果出棧順序是合理的話])
如何判斷出棧序列合理性
模擬棧的入棧和出棧,根據較大的數先出棧,比它小的數必須由大到小出棧,但不一定連續出棧 如 3 2 1 5 4 或者 3 2 5 4 1 3先出棧,2和1必須由大到小出棧,他們可以連續出棧也可以在中間隔著幾個數,但1在2前出棧坑定是不行的,如 3 1 2 5 4 或3 1 5 4 2,這都是不合理的順...
出棧入棧合理性
出棧入棧合理性,用兩指標指向兩陣列,建立一新棧來儲存元素。對於入棧陣列的指標一直往下走,併入棧,當與出棧陣列元素相等時,讓棧中的元素pop,還原入棧出棧的過程。如果在這種情況下不處理的話,會導致入棧陣列元素一直往下走,若入棧較多元素後連續出棧,會導致判斷失誤 入棧元素一直往後走,而之前早入棧的元素會...
判斷括號的合理性
給出乙個僅包含字元 和 的字串,判斷給出的字串是否是合法的括號序列 括號必須以正確的順序關閉,和 都是合法的括號序列,但 和 不合法。本次題目主要考察了棧的思想,採用假設的方法,如果該字串是合法的,每乙個左括號一定會對應乙個右括號,所以在出棧的時候一定是和當前所對應的字元一樣。public stat...