導航:首頁 > 編程語言 > java順序棧

java順序棧

發布時間:2023-07-05 17:15:24

Ⅰ 關於數據結構(java)的一個代碼

描述棧抽象數據類型的SStack介面的聲明
public interfaceSStack<E> //棧介面
{
boolean isEmpty(); //判斷是否空棧,若空棧返回true
boolean push(E element); //元素element入棧,若操作成功返回true
E pop(); //出棧,返回當前棧頂元素,若棧空返回null
E get(); //取棧頂元素值,未出棧,若棧空返回null
}
順序棧類具體操作方法的聲明:

importdataStructure.linearList.SStack;

public classSeqStack<E> implements SStack<E>
//順序棧類

{
private Object value[]; //存儲棧的數據元素
private int top; //top為棧頂元素下標

public SeqStack(int capacity) //構造指定容量的空棧
{
this.value = newObject[Math.abs(capacity)];
this.top=-1;
}
public SeqStack() //構造默認容量的空棧
{
this(10);
}

public boolean isEmpty() //判斷是否空棧,若空棧返回true
{
return this.top==-1;
}

public boolean push(E element) //元素element入棧,若操作成功返回true
{
if (element==null)
return false; //空對象(null)不能入棧

if (this.top==value.length-1) //若棧滿,則擴充容量
{
Object[] temp = this.value;
this.value = newObject[temp.length*2];
for (int i=0; i<temp.length;i++)
this.value[i] = temp[i];
}
this.top++;
this.value[this.top] = element;
return true;
}

public E pop() //出棧,返回當前棧頂元素,若棧空返回null
{
if (!isEmpty())
return (E)this.value[this.top--];
else
return null;
}

public E get() //取棧頂元素值,未出棧,棧頂元素未改變
{
if (!isEmpty())
return (E)this.value[this.top];
else
return null;
}

public String toString() //返回棧中各元素的字元串描述
{
String str="{";
if (this.top!=-1)
str +=this.value[this.top].toString();
for (int i=this.top-1; i>=0; i--)
str += ","+this.value[i].toString();
return str+"} ";
}
實例引用public static void main(String args[])
{
SeqStack<String> stack = newSeqStack<String>(20);
System.out.print("Push: ");
char ch='a';
for(int i=0;i<5;i++)
{
String str =(char)(ch+i)+"";
stack.push(str);
System.out.print(str+" ");
}
System.out.println("\n"+stack.toString());

System.out.print("Pop : ");
while(!stack.isEmpty()) //全部出棧
System.out.print(stack.pop().toString()+" ");
System.out.println();
}

Ⅱ java中什麼是棧啊

存放基本類型的變數數據和對象的引用,但對象本身不存放在棧中,而是存放在堆(new 出來的對象)或者常量池中(字元串常量對象存放在常量池中。)。

棧和常量池中的對象可以共享,對於堆中的對象不可以共享。棧中的數據大小和生命周期是可以確定的,當沒有引用指向數據時,這個數據就會消失。堆中的對象的由垃圾回收器負責回收,因此大小和生命周期不需要確定。

局部變數的數據存在於棧內存中。

棧的優勢是,存取速度比堆要快,僅次於寄存器,棧數據可以共享。但缺點是,存在棧中的數據大小與生存期必須是確定的,缺乏靈活性。棧中主要存放一些基本類型的變數數據(int, short, long, byte, float, double, boolean, char)和對象句柄(引用)。

Ⅲ java棧 是鏈表嗎

不是的。
鏈表:
鏈表是一種物理存儲單元上非連續,非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的,聊表由一系列節點組成,(鏈表中的每個元素稱為節點),節點可以在運行時動態生成,每個節點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。相比線性表順序結構,操作復雜。
棧:(水杯喝水,先進後出)
棧是一種數據結構,是只能在某一端插入和刪除的特殊線性表。他按照先進後出的原則存儲數據
線性表是邏輯概念,只要所有的數據在邏輯上是一維的都可以認為是線性表。線性表包括順序表(棧,隊列等),鏈表(單鏈表,雙鏈表等)。跟線性表相對的概念應該是樹或者堆。

順序表是空間概念,指的是所有的數據在存儲空間上順序排列,而跟具體的操作方式無關。與順序表相對的概念只有鏈表。

Ⅳ 我要用java實現一個棧,基本操作就是出棧入棧。請問如何實現效率比較高。

java的list的子類裡面有個叫vector,這個下面有個叫做stack,可以實現!你去看 看看

閱讀全文

與java順序棧相關的資料

熱點內容
哪個app有自學的專業 瀏覽:692
蘋果11給QQ加密在哪裡設置 瀏覽:581
安卓全家桶怎麼用 瀏覽:219
艾隆納亞伺服器什麼級別 瀏覽:321
360linux版本 瀏覽:185
程序員怎麼改變手機號碼 瀏覽:696
網站伺服器續費怎麼續費 瀏覽:534
cad等距線段快捷鍵命令 瀏覽:420
冰箱app和黑域哪個好用 瀏覽:223
鶴崗買房軟體app哪個最靠譜 瀏覽:719
python模擬登錄京東 瀏覽:282
irc命令 瀏覽:273
清空cisco交換機命令 瀏覽:760
地面波收費加密台搜不到了 瀏覽:283
小米更新一直顯示加密中 瀏覽:601
jsgzip解壓縮 瀏覽:428
邏輯電路設計怎麼編譯 瀏覽:758
捏手機解壓視頻 瀏覽:498
電腦解鎖加密分區 瀏覽:493
響應文本加密怎麼破解 瀏覽:381