資料結構專題 棧與佇列之鏈棧及其Java實現

2021-08-10 04:22:42 字數 1018 閱讀 9872

和普通的線性表一樣,我們可以選擇用單鏈或者是雙鏈來實現這個資料結構。由於棧只能夠在棧頂進行入棧和出棧操作,因此乙個只含有棧頂節點的單鏈表就可以輕鬆實現它了。

下面我們就來一起實現這個鏈式儲存的鏈棧吧:

//棧頂節點,不儲存元素,只用來指向棧頂的元素

private node stacktop;

private

int size;

public

mylinkedstack ()

class node

}

然後是進棧和出棧的操作:

@override

public e push(e item)

@override

public e pop()

接下來是,返回棧中頂部元素以及返回棧中某個元素的位置的實現:

@override

public e peek()

@override

public

intsearch(object o)

}return -1;

}else

}return -1;

}}

最後,是檢查棧是否為空以及清空整個棧的操作:

@override

public

boolean

empty()

@override

public

void

clear()

this.size = 0;

}

對比一下我們完成的順序棧與鏈棧,它們在時間複雜度上都是o(1)。對於空間效能來說,順序棧基於陣列實現,會有乙個陣列的固定長度(如果沒有放滿元素,存在空間浪費);而鏈棧並沒有長度的限制,卻在每個節點上耗費指標域的空間。因此如果棧的使用過程中元素變化不可預料,我們應該選擇鏈棧;如果元素數量的變化在乙個可控的範圍呢,那麼我們可以選擇順序棧。

資料結構 棧之鏈棧

鏈棧 單鏈表的頭插和頭刪時間複雜度o 1 所以鏈式棧的棧頂在頭這邊 1 基於鍊錶 帶頭結點的單鏈表 實現棧先進後出的特徵 2 對於棧,必須同乙個方向入棧和出棧 3 對於鍊錶,有頭插 頭刪,尾插和尾刪 時間複雜度 o 1 不需要迴圈遍歷,比如判斷乙個數是否為10,if a 10 o n 需要迴圈遍歷,...

資料結構之棧與佇列

寫在前面 棧與佇列是兩種不同特點的資料結構。棧遵循著先進後出的特點,它就像乙個器皿,先放進去的後被取出來,後放進去也就是靠近瓶口的先出來。佇列,就像它的名字一般,它的結構類似於排隊,先進先出,後進後出。棧的實現package stack public class mystack public mys...

資料結構之棧與佇列

順序棧儲存結構 define stack size 50 typedef structstack 順序棧初始化 void initstack stack s 順序進棧 int push stack s,type x 順序棧出棧 int pop stack s,type x 鏈棧儲存結構 typede...