Java棧的例項 陣列和鍊錶兩種方法

2021-07-04 22:35:12 字數 2753 閱讀 3931

一、棧

棧的定義

棧(stack)是限制僅在表的一端進行插入和刪除運算的線性表。

(1)通常稱插入、刪除的這一端為棧頂 (top),另一端稱為棧底 (bottom)。

(2)當表中沒有元素時稱為空棧。

(3)棧為後進先出(last in first out)的線性表,簡稱為 lifo 表。

棧的修改是按後進先出的原則進行。每次刪除(退棧)的總是當前棧中"

最新"的元素,即最後插入(進棧)的元素,而最先插入的是被放在棧的底部,

要到最後才能刪除。 

2、棧的基本運算

(1) 判斷棧是否為空 

boolean isempty();      

(2)清空棧 

void clear();  

(3)棧的長度 

int length();     

(4)資料入棧 

boolean push(t data);   

(5)資料出棧 ,棧中刪除

t pop();     

(6)資料出棧 ,棧中不刪除

t peek();

二、**編寫

1、介面類

package com.lin.stack;

/** * 功能概要:棧的介面類

* * @author linbingwen

* @since 2023年8月29日

*/public inte***ce mystack

2、陣列實現棧

package com.lin.stack;

/** * 功能概要:陣列實現棧

* * @author linbingwen

* @since 2023年8月29日

*/public class myarraystackimplements mystack

@override

public void clear()

} @override

public int length()

@override

public boolean push(t data)

objs= temp;

} objs[size++]=data;

return true;

} @override

@suppresswarnings("unchecked")

public t pop()

@override

@suppresswarnings("unchecked")

public t peek()

}

3、鍊錶實現棧

package com.lin.stack;

/** * 功能概要:

* * @author linbingwen

* @since 2023年8月29日

*/public class myliststackimplements mystack

@override

public boolean isempty()

@override

public void clear()

@override

public int length()

@override

public boolean push(t data) else

size++;

return true;

} @override

public t pop()

t data = top.data;

top = top.pre;

size--;

return data;

} @override

public t peek()

t data = top.data;

return data;

}}

4、測試

package com.lin.stack;

/** * 功能概要:

* * @author linbingwen

* @since 2023年8月29日

*/public class stacktest

system.out.println("陣列實現的棧輸出如下 ");

for(int j =0;j<30;j++)

system.out.println();

system.out.println("鍊錶實現的棧輸出如下 ");

for(int k =0;k<30;k++)}}

輸出結果如下:

或者 看這裡:

陣列實現的棧輸出如下

29  28  27  26  25  24  23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0  

鍊錶實現的棧輸出如下 

29  28  27  26  25  24  23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0  

兩種棧的實現 順序棧和鍊錶棧

棧 一 定義 棧是限定盡在一端插入或刪除操作的線性表。後進先出 lifo 二 習慣上稱棧的可訪問元素為站棧頂 top 元素,元素插入棧稱為入棧 push 刪除元素稱為出棧 pop 三 棧的adt template class stack 建構函式 virtual stack 析構函式 virtual...

兩種實現棧的方式 利用鍊錶和陣列

棧是一種常用的資料結構,其基本方式為先進後出 棧的實現方式一般為兩種 鍊錶和陣列,先來看一下用鍊錶實現的方式 如下 利用鍊錶實現棧 author victor gong param 棧中元素的資料型別 public class linkedstack public linkedstack retur...

資料結構 六 棧 陣列和鍊錶兩種模擬方式

棧的英文是stack。棧是乙個先入後出 first in last out 的有序列表 思路分析圖 實現 class stack1 判斷棧滿 public boolean isfull 判斷棧空 public boolean isempty 入棧 public void push int value...