今天主要學習了棧的習題和隊列的鏈表實現
一、棧具備棧頂和棧底,棧頂是數據的進入和輸出端,top是棧頂的上一位,棧的實現能夠用鏈表和數組來實現,可是鏈表的尾插和尾刪複雜度太高,因此用數組更好。
二、習題:有效的括號如:() {()} {([])}
思想:
利用棧的先進後出的特性,首先遍歷字符串,遇到左邊的括號就進棧,而後遇到右邊的就比較,比喻遇到'}',就把棧頂元素讀出來,若是同樣,依次讀取棧中元素來和字符串比較,若是進棧的和字符串剩下的都是左右關係,那就是true,須要注意,比較結束時,棧中元素得爲空,且比較開始時,棧不能爲空,這些都得注意。數組
三、隊列
隊列具備先進先出的特色,具備隊頭和隊尾,能夠用數組和鏈表來實現,可是數組的頭刪時間複雜度太高,因此不適用,所以選用鏈表更加合適。
鏈表來實現隊列,須要2個結構體:
一是鏈表的結構,
struct QueueNode
{
int data;
struct QueueNode next;
};
二是隊列的結構
struct Queue
{
struct stackNode Front;
struct stackNode* Back;
};ide