揹包 佇列和棧

2022-07-26 18:33:09 字數 2015 閱讀 1056

揹包

public class bagimplements iterable

bag()

建立乙個空揹包

void add(item item)

新增乙個元素

boolean isempty()

揹包是否為空

int size()

揹包中的元素數量

先進先出(fifo)佇列

pubilc class queueimplements iterable

queue()

建立空佇列

void enqueue(item item)

新增乙個元素

item dequeue()

刪除最早新增的元素

boolean isempty()

佇列是否

int size()

佇列中元素的數量

下壓(後進先出,lifo)棧

public class stackimplements iterable

stack()

建立乙個空棧

void push(item item)

新增乙個元素

item pop()

刪除最近新增的元素

boolean isempty()

棧是否為空

int size()

棧中的元素數量

揹包是一種不支援從中刪除元素的集合資料型別——它的目的就是幫助用例手機元素並迭代遍歷所有收集到的元素,迭代的順序不確定並且與用例無關。

典型用例:求平均值和方差

public class statas 

int n = numbers.size();

double sum = 0.0;

for (double x : numbers)

double mean = sum / n;

sum = 0.0;

for (double x : numbers)

double std = math.sqrt(sum / (n - 1));

stdout.printf("mean: %.2f", mean);

stdout.printf("std dev: %.2f\n", std);

}}

先進先出佇列(或簡稱佇列)是一種基於先進先出(fifo)策略的集合型別。

生活中的例子:在影劇院門前排隊的人群、在收費站前排隊的汽車或是計算機上某種軟體中等待處理的任務。

用例:

public static void main(string args) 

int n = q.size();

int a = new int[n];

for (int i = 0; i < n; i++)

return a;

}

下壓棧(或簡稱棧)是一種基於後進先出(lifo)策略的集合型別。

用例:

public class reverse 

for (int i : stack)

}}

用兩個棧,乙個用於儲存運算子,乙個用於儲存運算元。

在處理完最後乙個右括號時,運算元棧上只會有乙個值,它就是表示式的值。

public class evaluate  else if (s.equals("+"))  else if (s.equals("-"))  else if (s.equals("*"))  else if (s.equals("/"))  else if (s.equals("sqrt"))  else if (s.equals(")")  else if (op.equals("-"))  else if (op.equals("*"))  else if (op.equals("/"))  else if (op.equals("sqrt")) 

vals.push(v);

} else

} stdout.println(vals.pop());

}}

1 3揹包,佇列和棧

許多基礎資料型別都和物件的集合有關,具體來說,資料型別的值就是一組物件的集合,所有操作都是關於新增,刪除或是訪問集合中的物件。三種資料型別 揹包,佇列,棧。1.1泛型 集合類的抽象資料型別的乙個關鍵特性是我們應該可以用他們儲存任意型別的資料,它被稱為泛型,也叫做引數化型別。類名後的記號將item定義...

揹包 佇列和棧的實現(基於陣列)

下面介紹揹包 佇列和棧 基於陣列 的實現,是對 演算法 第四版 1.3 節的部分總結。api 是開發的起點,所以先給出 api 表 1 泛型可迭代的基礎集合資料型別的 api 總的思路是先給出乙個簡單而經典的實現,然後討論它的改進並得到表 1 中的 api 的所有實現。從簡單的開始,我們先實現一種表...

揹包問題 0 1揹包 完全揹包和多重揹包

參考自 以下 中的w是每個物品的重量,v是每個物品的價值 w 0 list map int input split v 0 list map int input split top int input n len w d 0 top 1 for in range n 1 for i in range...