參看: 1 import java.util.*; 2 3 public class TestStack { 4 public static void main(String[] args) { 5 Stack stack = new Stack(); 6 7 for(int i = 0; i 10; i++) { 8 stack.push(new Integer(i)); 9 }1011 if(!stack.empty()) {12 System.out.println(stack.pop());13 }14 }15 }
創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計(jì),贛榆網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:贛榆等地區(qū)。贛榆做網(wǎng)站價(jià)格咨詢:18982081108
java中stack的使用方法,堆棧是一種"后進(jìn)先出"(LIFO) 的數(shù)據(jù)結(jié)構(gòu), 只能在一端進(jìn)行插入(稱(chēng)為"壓棧") 或刪除 (稱(chēng)為"出棧")數(shù)據(jù)的操作,下面看示例:
JAVA 中,使用 java.util.Stack 類(lèi)的構(gòu)造方法創(chuàng)建對(duì)象。
public class Stack extends vector
構(gòu)造方法 : public Stack() 創(chuàng)建一個(gè)空 Stack。
方法:
1. public push (item ) 把項(xiàng) 壓入棧頂。其作用與 addElement (item ) 相同。
參數(shù) item 壓入棧頂?shù)捻?xiàng) 。 返回: item 參數(shù) ;
2. public pop () 移除棧頂對(duì)象,并作為函數(shù)的值 返回該對(duì)象。
返回:棧頂對(duì)象(Vector 對(duì)象的中的最后一項(xiàng))。
拋出異常 : EmptyStackException 如果堆棧式空的 。。。
3. public peek() 查看棧頂對(duì)象而不移除它。。
返回:棧頂對(duì)象(Vector 對(duì)象的中的最后一項(xiàng))。
拋出異常 : EmptyStackException 如果堆棧式空的 。。。
4. public boolean empty (測(cè)試堆棧是否為空。) 當(dāng)且僅當(dāng)堆棧中不含任何項(xiàng)時(shí) 返回 true,否則 返回 false.
5. public int search (object o) 返回對(duì)象在堆棧中位置, 以 1 為基數(shù), 如果對(duì)象 o是棧中的一項(xiàng),該方法返回距離 棧頂最近的出現(xiàn)位置到棧頂?shù)木嚯x; 棧中最上端項(xiàng)的距離為 1 。
Java棧的實(shí)現(xiàn)
public class MyStack { //定義一個(gè)堆棧類(lèi)
int[] array; //用int數(shù)組來(lái)保存數(shù)據(jù),根據(jù)需要可以換類(lèi)型
int s_size; //定義堆棧的寬度
public MyStack(int i){ //定義一個(gè)帶參數(shù)構(gòu)造器
array=new int[i]; //動(dòng)態(tài)定義數(shù)組的長(zhǎng)度
s_size=0; //堆棧的默認(rèn)寬度為0
}
public MyStack(){ //默認(rèn)構(gòu)造器
this(50); //默認(rèn)構(gòu)造器可容納50個(gè)元素
}
public void push(int i){ //壓棧
array[this.s_size]=i;
this.s_size++;
}
public int pop(){ //從堆棧中取元素,從棧頂開(kāi)始取
if(this.s_size!=0){
int t=array[s_size-1]; //用中間變量保存棧頂?shù)脑?/p>
array[s_size-1]=0; //取完元素該位置設(shè)為0
s_size--; //棧的大小減1
return t; //返回棧頂元素
}else{
System.out.println("This stack is empty"); //當(dāng)棧為空時(shí)顯示提示信息,返回0
return 0;
}
}
public boolean isEmpty(){ //判斷棧是否為空
return this.s_size==0;
}
public int top(){ //從棧頂取值,功能和 pop() 方法一樣
if(!this.isEmpty()){
int t=array[this.s_size-1];
array[this.s_size-1]=0;
this.s_size--;
return t;
}else{
System.out.println("This stack is empty!");
return 0;
}
}
public void printAll(){ //打印出堆棧中的所有元素的值,不是取出,元素依然在堆棧里
if(!this.isEmpty()){
for(int i=this.s_size - 1;i=0;i--){
System.out.println(array[i]);
}
}
}
//下面是測(cè)試代碼
public static void main(String[] args){
MyStack stack=new MyStack();
stack.push(4);
stack.push(5);
stack.push(6);
stack.push(7);
//System.out.println(stack.isEmpty());
stack.printAll();
System.out.println("===========");
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
}
}
public class IntStack {
private int[] stack;
private int top;
/**
*初始化棧,傳入一個(gè)非負(fù)的整數(shù),否則拋出一個(gè)錯(cuò)誤
*/
public IntStack(int size) throws StackErrorException{
if(size0){
throw new StackErrorException("錯(cuò)誤的大小");
}
init(size);
}
private void init(int size) {
stack = new int[size];
top = 0;
}
/**
*判斷棧是否為空,true則為空,反之則反
*/
public boolean isEmpty(){
return top==0;
}
/**
*判斷棧是否已滿,true則已滿,反之則反
*/
public boolean isFull(){
return top==stack.length;
}
/**
*向棧頂添加元素,滿則拋出異常
*/
public void push(int value) throws StackErrorException{
if(isFull()){
throw new StackErrorException("棧已滿");
}
stack[top++] = value;
}
/**
*移除棧頂元素并返回,空則拋出異常
*/
public int pop() throws StackErrorException{
if(isEmpty()){
throw new StackErrorException("已到棧底!");
}
return stack[--top];
}
/**
*返回棧頂元素,空則拋出異常
*/
public int peek() throws StackErrorException{
if(isEmpty()){
throw new StackErrorException("已在棧底!");
}
return stack[top-1];
}
/**
*返回棧大小
*/
public int size(){
return stack.length;
}
class StackErrorException extends Exception{
public StackErrorException(String msg) {
super(msg);
}
}
}
當(dāng)前文章:用java代碼編寫(xiě)堆棧 java堆棧和棧的圖解
本文URL:http://www.rwnh.cn/article6/dosigig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、微信小程序、定制網(wǎng)站、網(wǎng)站維護(hù)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)