棧(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...