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 針對字首表示...