(二)棧和佇列(Java實現)

2021-08-19 07:53:39 字數 2887 閱讀 2395

本文主要是陣列和鍊錶實現棧、鍊錶實現佇列。棧和佇列的結構都比較簡單,用鍊錶實現時都是單鏈表實現的!

先進後出。先進來的元素儲存在棧的最底部,新來的元素則在棧頂堆積,直到棧滿為止;而取元素的時候,只能從棧頂取,直到棧空為止。棧有兩種方法:壓棧(push)和彈棧(pop)。

陣列和鍊錶都可以實現。陣列最好只實現固定棧(棧的容量數量固定),鍊錶可以實現動態棧

(因為進出棧時,永遠只需要對鍊錶的頭操作)。

//獲取棧的長度

public int getsize()

//獲取棧頂

public int gettop()

//判斷是否為空棧,(空:true)

public boolean isempty()

//判斷是否為滿棧

public boolean isfull()

//壓棧操作

public void push(int data) catch (exception e)

}else

}//彈棧操作

public int pop() throws exception else

}//獲取棧頂元素,但不彈棧

public int gettopvalue()

//main方法測試

/** * 用鍊錶實現棧

*/public class mylinkedstack

/*** 通過建構函式,構造出乙個自定義大小的棧

*/public mylinkedstack(int size)

//設定頭結點

public void setheader(node header)

//判斷棧是否已滿

public boolean isfull()

return false;

}//判斷棧是否為空的

public boolean isempty()

return false;

}//壓棧

public void push(object value)

//這裡將原來的header作為引數傳入,然後以新new出來的node作為header

header = new node(value,header);

elementcount ++;

}//彈棧

public object pop()

object obj = header.getelement();

header = header.next;

elementcount --;

return obj;

}//返回棧頂元素

public object getheaderelement()

return header.getelement();

}//main方法測試

先進先出

佇列每一次都是要先刪除前面的元素,陣列越是刪除前面的元素效率越是低,所以這裡就不再研究陣列實現佇列了。相反的是使用鍊錶實現會更簡單,效率會更高!另外佇列的結構比較簡單,只需要用單鏈表就夠了,進佇列時,需要記錄隊尾。

下面用鍊錶實現佇列:rear記錄尾,front記錄頭

package com.review07.linkedqueue;

/** * 單鏈表實現的佇列

*/public class mylinkedqueue

/*** 將乙個物件追加到佇列的尾部

*/public void enqueue(object obj) else

}/**

* 隊首物件出隊

* @return 出隊的物件,佇列空時返回null

*/public object dequeue()

else if(front == rear && rear != null)

object obj = front.element;

front = front.next;

return obj;

}//main測試

public static void main(string args) }}

棧 佇列 Java實現

鍊錶實現的棧 由於棧先進後出的特性,push時要用首插法,pop也從頭部開始 push 先檢查鍊錶是否空,空則作為頭結點 再從head開始pop,也有乙個空的判斷 public class linkedstack else public intpop else public void printal...

表 棧和佇列 Java的實現

1.1 list介面繼承collection介面public inte ce list extends collection list adt有兩種流行的實現方式 linkedlist 類提供了list adt 的雙鏈表實現 例子 將表中所有具有偶數值的項刪除 public static void ...

實現棧和佇列

一 棧的實現 入棧 出棧 取棧頂元素 順序表實現棧操作 實現 public class mystack data size val size 2.出棧 public integer pop integer result data size 1 size return result 3.取棧頂元素 p...