棧的java實現

2021-08-20 08:24:26 字數 1133 閱讀 5070

棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧(push),它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧(pop),它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。 

它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。如圖所示 

實現起來比較簡單,就是利用乙個陣列作為容器,同時定義乙個指向「棧頂」即陣列插入字元的最後乙個索引指標即可。當push的時候,指標加1;pop的時候,指標減1。 

需要注意的是不要溢位。直接上**了!

public

class stack

public

stack(int count)

public

void

push(string s) throws arrayindexoutofbound***ception

else

system.out.print(s + " 壓棧溢位! \n");

}public string pop()

public boolean isempty()

public string tostring()

return s;}}

做一下測試:

public

static

void

main(string args)

static

void print(string s)

結果如下: 

ok!這裡做了壓棧和出棧,可以看到當溢位的時候不會報錯。

棧的用處有很多。棧可以用來在函式呼叫的時候儲存斷點,做遞迴時要用到棧,等等。最近學習的下推自動機使用棧作為儲存完成其演算法。

棧的實現java

棧的實現 棧,僅限制在棧的一端進行插入和刪除,用於插入與刪除的一端為頂部。另一端為底端。棧,定義為先進後出。可以看到 插入以a1,a2,a3順序進行,而刪除以an an 1順序進行 同樣棧的實現也分為陣列實現以及鏈式實現兩種。首先來介紹一下順序實現 優點 順序實現的出棧和入棧的執行速度會更加的快。缺...

Java 棧的實現

public class stack 構造方法 param initsize 棧的初始大小 public stack int initsize stack new object initsize index 1 出棧操作 return 棧頂物件 public synchronized e pop r...

java 棧的實現

介面定義inte ce stack介面實現 鍊錶方式class linkedstackimplements stack node u item,nodenext boolean end private nodetop 棧頂指標 linkedstack 彈棧 public t pop t result...