資料結構--雙棧佇列練習題
編寫一個類,只能用兩個棧結構實現佇列,支援佇列的基本操作(push,pop)。
給定一個操作序列ope及它的長度n,其中元素為正數代表push操作,為0代表pop操作,保證操作序列合法且一定含pop操作,請返回pop的結果序列。
測試樣例:
[1,2,3,0,4,0],6
返回:[1,2]
1,這樣不平衡
class TwoStack {
public:
vector<int> twoStack(vector<int> ope, int n) {
// write code here
vector<int> result;
for (int i = 0; i < n; i++){
if (ope[i]>0)
push(ope[i]);
else{
result.push_back(pop());
}
}
return result;
}
//保證始終有一個棧是空的
//將stackPop中的全部資料要先匯入stackPush
void push(int e){
stackPush.push(e);
}
//將stackPush中資料,要全部匯入stackPop中
//這樣的話,push和pop不平衡
int pop(){
if (!stackPop.empty()){
int temp = stackPop.top();
stackPop.pop();
return temp;
}
else{
while (!stackPush.empty()){
stackPop.push(stackPush.top());
stackPush.pop();
}
int temp = stackPop.top();
stackPop.pop();
return temp;
}
}
bool empty(){
return (stackPop.empty() && stackPush.empty());
}
stack<int> stackPush;
stack<int> stackPop;
};
解法2:
class TwoStack {
public:
vector<int> twoStack(vector<int> ope, int n) {
vector<int> result;
for (int i=0; i<n; i++){
if (ope[i] > 0) push(ope[i]);
else result.push_back( pop() );
}
return result;
}
stack<int> a;
stack<int> b;
void push(int val){
while (!b.empty()){//把b中的資料全部倒入a
a.push(b.top());
b.pop();
}
a.push(val);
}
int pop(){
//把a中的資料全部倒入b
while (!a.empty()){
b.push(a.top());
a.pop();
}
int val = b.top();
b.pop();
return val;
}
};
相關推薦
資料結構--雙棧佇列練習題
編寫一個類,只能用兩個棧結構實現佇列,支援佇列的基本操作(push,pop)。 給定一個操作序列ope及它的長度n,其中元素為正數代表push操作,為0代表pop操作,保證操作序列合法且一定含pop操
常見資料結構(一)-棧,佇列,堆,雜湊表
轉載:https://blog.csdn.net/u013063153/article/details/54667361?locationNum=8&fps=1 寫在前面 本文所有圖片均截圖自coursera上普林斯頓的課程《A
java資料結構——雙端佇列
普通佇列是一端進,另一端出的FIFO形式,而雙端佇列就沒有這樣的限制級,也就是我們可以在佇列兩端進行插入或者刪除操作。接下來使用雙端連結串列來實現一個雙端佇列。 1、引進雙端連結串列 2、構
資料結構表棧佇列的總結
在插入元素的時候首先判斷是否滿秩,刪除元素時判斷是否為空秩,順序表一類主要通過看實際長度 與分配長度大小進行判斷,連結串列一類主要通過指標大小進行判斷如top頭指標,佇列主要通過rear與 front是否相等及利用s標誌進行判斷。 一、順序表
15 API-集合(Collection(功能,迭代器),List(List特有迭代器,併發異常),常見資料結構圖示(棧,佇列,陣列,連結串列))&物件陣列
1:物件陣列(掌握) (1)陣列既可以儲存基本資料型別,也可以儲存引用型別。它儲存引用型別的時候的陣列就叫物件陣列。 (2)案例:用陣列儲存5個學生物件,並遍歷陣列。 學生的物件 public class Student { // 成員變數 private Stri
Python資料結構——雙端佇列
雙端佇列(Deque),是一種類似於佇列的元素的有序集合。它擁有兩端,隊首和隊尾,並且元素保持在當前的位置。雙端佇列的一個不同點就是,新增和刪除元素的位置不受限制。新元素可以在隊首或者隊尾新增。同樣地,雙端佇列中的元素可以從兩端彈出。在某種意義上,這種混合的線性結構同時具有棧和
【資料結構】棧和佇列相關練習題:判斷有效的括號
給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效。 有效字串需滿足: 左括號必須用相同型別的右括號閉合。 左括號必須以正確的順序閉合。 注意空字串可被認為是有效字串。 具體實現程式碼如下: #pragma once #incl
三、資料結構演算法-棧、佇列、優先佇列、雙端佇列
## 一、Stack (棧) ### 1、資料結構 Stack是棧。它的特性是:**先進後出(FILO, First In Last Out) 後進先出(Last in - First out)**。java工具包中的Stack是繼承於Vector(向量佇列)的,由於Vector是通過陣列實現的,這就意味
【12】python 棧型資料結構模擬、佇列型資料結構模擬
一、壓棧操作模擬 #__author:"吉*佳" #date: 2018/10/21 0021 #function:棧 # 棧:即是先進後出的一種資料結構 # (1)模擬壓棧操作 stack=[] flag=True while flag: temp = input("請輸入壓棧元素[
Python資料結構之: 棧與佇列
棧(stacks) 是一種只能通過訪問其一端來實現資料儲存與檢索的線性資料結構,具有後進先出(last in first out,LIFO)的特徵 stack = [] stack.append("A") #A入棧 stack.append("B") #B入棧 st
資料結構筆記-棧與佇列python實現
概述 棧與佇列是程式設計中被廣泛應用的兩種重要的資料結構,都是在特定範圍的儲存單元記憶體儲資料,這些資料都可以被重新取出使用,與線性表相比,他們的插入和刪除受到更多的約束,固又稱限定性的線性表結構。他們是最簡單的快取結構,他們只支援資料項的儲存與訪問,不支援資料項之間的任何關係。因此,這兩種
java版資料結構與演算法—佇列、兩個棧實現一個佇列
/** * 佇列:先進先出 */ class MyQueue { int a[]; int maxSize; //大小 int front; //開頭 int rear; //結尾 int nItems; //元素個數 //初始化
【資料結構】棧與佇列 Part1:棧的建立與相關函式
First.棧(Stack) 定義:後進先出的線性表 操作: #include<stack> 標頭檔案 stack<int> s; 建立int型別的棧s s.push(x); &n
資料結構(棧與佇列) java實現
棧的相關定義 package StackDef; import java.util.Arrays; import java.util.EmptyStackException; /** * 通過陣列模擬棧 * @author tian * */ public cla
資料結構之棧和佇列
棧和佇列是兩種重要的線性結構。從資料結構角度來看,棧和佇列也是線性表,它們是操作受限的線性表,被稱為限定性的資料結構。 棧(Stack) 棧是限定僅在表尾進行插入或刪除操作的線性表。 表尾端被稱為棧頂(top),表頭端稱為棧底(bottom),不含元素的空表稱為空棧。
常見的資料結構(棧、佇列、陣列、連結串列和紅黑樹)
(一)棧 棧:stack,又稱堆疊,它是運算受限的線性表,其限制是僅允許在標的一端進行插入和刪除操作,不允許在其 他任何位置進行新增、查詢、刪除等操作。 簡單的說:採用該結構的集合,對元素的存取有如下的特點先進後出(即,存進去的元素,要在後它後面的元素依次取出後,才能取出該元素)。例如,子彈
【資料結構】棧的儲存結構(二)雙端棧
雙端棧 雙端棧是為了更有效的利用棧的空間而產生的。 雙端棧是一種特殊的順序棧。 雙端棧適用於一組互補的資料。 雙端棧兩端為底,2個整形表示棧頂指標。 程式碼收穫 主要還是弄清雙端棧的結構。 棧的歸檔 #include <stdio.h> #
python資料結構之棧和佇列
1.功能實現 之前文章有,可以點開看看 棧 佇列 2.應用(1)括號匹配及字尾表示式 class Solution(object): def isValid(self, s): """ :type s: str :rtype
資料結構實驗---棧和佇列
#include<stdio.h> #include<stdlib.h> #define N 105 int a[N]; struct node { int data; n
資料結構——入棧,出棧,佇列相關操作(C語言實現)
閱讀過程之中可能會花費比較多的時間:建議直接翻到最後,有完整的程式碼可以使用 程式準備工作 #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include<proc