資料結構與演算法之棧(基於陣列)講解

2021-09-26 23:43:08 字數 1826 閱讀 6451

1,棧是一種後進先出(last in first out)lifo

2,基於自己實現的陣列實現棧,下面是自己實現陣列類

package com.dream21th.algorithmicdatastructure.stack;

/** * @auther: hp

* @date: 2019/9/7 15:42

* @description:

*/public class myextendarray

/*** 構造無參函式,初始化陣列容量

*/public myextendarray()

public int getsize()

public boolean isempty()

/*** 在指定索引位置加值

* @param index

* @param e

*/public void add(int index,e e)

if(this.size==datas.length)

for(int position=size-1;position>=index;position--)

this.datas[index]=e;

this.size++;

}private void resize(int newcapacity)

return this.datas[index];

}public void set(int index,e e)

this.datas[index]=e;

}public boolean contain(e e)

e ret=this.datas[index];

for(int i=index+1;i

3,棧的實現

package com.dream21th.algorithmicdatastructure.stack;

/** * @auther: hp

* @date: 2019/9/8 10:41

* @description:

*/public inte***ce stack

package com.dream21th.algorithmicdatastructure.stack;

/** * @auther: hp

* @date: 2019/9/8 10:55

* @description:

*/public class arraystackimplements stack

public arraystack()

@override

public int getsize()

@override

public boolean isempty()

@override

public void push(e e)

@override

public e pop()

@override

public e peek()

public int getcapacity()

@override

public string tostring() {

stringbuilder builder=new stringbuilder();

for(int i=0;i

4,時間複雜度分析

由於都是在資料末尾進行操作,進棧和出棧的空間複雜度都是o(n)。

《資料結構與演算法》之棧

資料結構與演算法 之鍊錶 資料結構與演算法 之佇列 資料結構與演算法 之排序 資料結構與演算法 之二分查詢 資料結構與演算法 之二叉樹 關於 棧 我有乙個非常貼切的例子,就是一摞疊在一起的盤子。我們平時放盤子的時候,都是從下往上乙個乙個放 取的時候,我們也是從上往下乙個乙個地依次取,不能從中間任意抽...

資料結構與演算法之棧

中綴表示式實現多位數的計算 實現 public class calculatordemo else 否則直接入符號棧 else 如果是數字直接入數棧 else else index if index expresion.length 表示式掃瞄完後就順序的從數棧和符號棧中pop出相應的數字和符號並執...

資料結構與演算法之棧

字首表示式 求值 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算 棧頂元素 和 次頂元素 並將結果入棧 重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果 例如 3 4 5 6 對應的字首表示式就是 3 4 5 6 針對字首表示...