首先都是線性的,線性包括順序和鏈式,棧和隊都可以用兩種方式實現。棧只能存于棧頂取于棧頂,隊列先進先出,因此存取點是固定的。
函數棧幀創建原理
畫圖即可。
A.顯然不行,5如果第一個出來說明5是最后一個進的,5如果下面就是1,說明234都已經不在棧內了,才能輪到1,但是選項中1后面竟然還跟著234,說明不對
B.4第一個5第二個都合理,不合理的是132
C.改成43215就是對的了
D.先入棧123,再出棧321,在入棧45,再出棧54
A.入棧abcde,出棧edcba。
B.入棧abcd,出棧d;入棧e,出棧e;出棧cba。
C.a不可能再b前面出棧
D.每個元素一入馬上出。
中綴表達式轉后綴表達式步驟:
1、遇到操作數,直接輸出
2、遇到運算符,若該運算符的優先級大于棧頂運算符的優先級,則壓棧;若小于等于棧頂運算符,將棧頂運算符輸出,再與新的棧頂元素比較,按照同樣的處理方式,直到該運算符的優先級大于棧頂元素或者空集或者左括號,壓棧;若棧頂是左括號,入棧。
3、遇到左括號,壓棧。
4、遇到右括號,棧頂運算符出棧并依次輸出,直至遇見左括號,左括號出棧但不輸出。
p的后指針指向q;
p的前指針指向q的前指針;
q的前指針指向p;
p的前指針的后指針等于p。
A.棧空不行B.棧滿不行D.隊滿不行。
關鍵在于順序存儲,順序存儲就是數組,而數組是靜態的,容量優先。鏈式就不存在這個問題。
那這個很簡單啦,去打印店,先到的先打印,后到的后打印。
入隊:
rear=(rear+1)%length;
Queue[rear]=x;(要插入的元素)
count++;
出隊:
count--;
輸出Queue[front];
front=(front+1)%length;
理論上,都可行,但是他是隊列,所以只能進行出隊入隊操作。
入棧abcd(4),出棧d(3);入棧ef(5),出棧fe(3);出棧c(2);入棧gh(4),出棧hg(2);出棧ba(0);
刪一個:
加兩個:
答案2,4
while(s[j])j++;是把j指向了字符串末端,也就是‘\0’的位置。
for循環中–j又讓j指向了字符串的最后一個有效字符。
然后不斷頭尾對比是否一致。
如果字符串長度是奇數,那么如果對稱,則最后i=j,如果是偶數,則i>j;
如果i<j,說明中間有一對不一樣,導致for循環終止,則返回零。
1234
1342
S X S S X S X X
第一個出棧的是30,說明之前沒有元素出棧,全都入棧了,那么接下來的出棧順序就只能是依次輸出了。p10=30-10+1=21。
pop兩次,第一次b,第二次c。
和上面一道題類似。
畫圖解決一切。
每次進行一個運算符的運算,都帶上一個括號比較好!
感覺今天的文寫的很水,但是確實把這個基礎題復習到了。明天把這部分的編程題復習一下然后開始復習二叉樹!!