資料結構 棧和佇列

2021-07-15 05:04:28 字數 2544 閱讀 6359

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

class solution

int pop()

}node = stack2.top();

stack2.pop();

return node;

}private:

stack

stack1;

stack

stack2;

};

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。

class solution ;

if (n < 2)

long

long fibnminusone = 1;

long

long fibnminustwo = 0;

long

long fibn = 0;

for (unsigned int i = 2; i <= n; i++)

return fibn;

}};

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

class solution ;

if (number < 3)

long

long fibnminusone = 2;

long

long fibnminustwo = 1;

long

long fibn = 0;

for (unsigned int i = 3; i <= number; i++)

return fibn;

}};

乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

class

solution else

if (number == 1)

else

return

count;}}

};

我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋乙個2*n的大矩形,總共有多少種方法?

class solution ;

if (number < 3)

long

long fibnminusone = 2;

long

long fibnminustwo = 1;

long

long fibn = 0;

for (unsigned int i = 3; i <= number; i++)

return fibn;

}};

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。

class

solution

flag = flag << 1;

}return

count;

}};

定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。

class solution else

}else

}void pop()

int top()

int min()

};

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)

思路:解決這個問題很直觀的想法就是建立乙個輔助棧。總結上述入棧、出棧的過程,我們可以找到判斷乙個序列是不是棧的彈出序列的規律:如果下乙個彈出的數字剛好是棧頂數字,那麼直接彈出。如果下乙個彈出的數字不在棧頂,我們把壓棧數列中還沒有入棧的數字壓入輔助棧,知道把下乙個需要彈出的數字壓入棧頂為止。如果所有的數字都壓入棧了仍然沒有找到下乙個彈出的數字,那麼該序列不可能是乙個彈出序列。

/*思路:先迴圈將pusha中的元素入棧,遍歷的過程中檢索popa可以pop的元素

**如果迴圈結束後棧還不空,則說明該序列不是pop序列。

*/class solution

int index = 0;

for (int i = 0; i < pushv.size(); i++) else}}

}if (stack.empty())

return ispoporder;

}};

資料結構 棧和佇列

棧 基礎 知識棧 練習題 佇列 基礎知識 棧示意圖 後進先出 順序棧結構定義 define maxsize 1024 struct stack 操作函式 push 入棧 pop 出棧 struct lstack 鏈棧示意圖 操作函式 push 入棧 pop 出棧 注意 也可以直接呼叫系統已經寫好的庫...

資料結構 棧和佇列

本章的基本內容是 兩種特殊的線性表 棧和佇列 從資料結構角度看,棧和佇列是操作受限的線性表,他們的邏輯結構相同。從抽象資料型別角度看,棧和佇列是兩種重要的抽象資料型別。p棧 限定僅在表的一端進行插入和刪除操作的線性表。p允許插入和刪除的一端稱為棧頂,另一端稱為棧底。p空棧 不含任何資料元素的棧。a ...

資料結構 棧和佇列

棧和佇列是兩種特殊的線性表,它們的邏輯結構和線性表相同,只是其運算規則較線性表有更多的限制,故又稱它們為運算受限的線性表。棧和佇列被廣泛應用於各種程式設計中。棧的順序儲存結構簡稱為順序棧,它是運算受限的順序表。棧的鏈式儲存結構稱為鏈棧。佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運...