java 實(shí)現(xiàn)下壓棧的操作(能動(dòng)態(tài)調(diào)整數(shù)組大小)
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
import java.util.Iterator; public class ResizingArrayStack<Item> implements Iterable<Item> { private Item[] a=(Item[]) new Object[1]; private int N=0; public boolean isEmpty() { return N==0;} public int size() {return N;} private void resize(int max) { Item[] temp=(Item[]) new Object[max]; for(int i=0; i<N; i++) { temp[i]=a[i]; } a=temp; } public void push(Item item) { if(N==a.length) resize(2*a.length); a[N++]=item; } public Item pop() { Item item=a[--N]; a[N]=null; if(N>0 && N==a.length/4) resize(a.length/2); return item; } public Iterator<Item> iterator() {return new ReverseArrayIterator();} private class ReverseArrayItertor implements Iterator<Item> { private int i=N; public boolean hasNext() {return i>0;} public Item next() {return a[--i];} public void remove() {} } }
補(bǔ)充:Java實(shí)現(xiàn)棧的入棧和出棧等基本操作
棧的英文為(stack)
棧是一個(gè)先入后出(FILO-First In Last Out)的有序列表。
棧(stack)是限制線性表中元素的插入和刪除只能在線性表的同一端進(jìn)行的一種特殊線性表。允許插入和刪除的一端,為變化的一端,稱(chēng)為棧頂(Top),另一端為固定的一端,稱(chēng)為棧底(Bottom)。
根據(jù)棧的定義可知,最先放入棧中元素在棧底,最后放入的元素在棧頂,而刪除元素剛好相反,最后放入的元素最先刪除,最先放入的元素最后刪除
棧的基本操作實(shí)現(xiàn)
package com.atguigu.stack; import java.util.Scanner; public class ArrayStackDemo { public static void main(String[] args) { //測(cè)試 ArrayStack stack =new ArrayStack(4); String key=""; boolean loop = true; Scanner scanner = new Scanner(System.in); while(loop) { System.out.println("show:表示顯示棧"); System.out.println("exit:退出程序"); System.out.println("push:表示添加數(shù)據(jù)到棧(入棧)"); System.out.println("pop:表示從棧取出數(shù)據(jù)(出棧)"); System.out.println("請(qǐng)輸入你的選擇"); key = scanner.next(); switch(key) { case "show": stack.list(); break; case "push": System.out.println("請(qǐng)輸入一個(gè)數(shù)"); int value = scanner.nextInt(); stack.push(value); break; case "pop": try { int res = stack.pop(); System.out.printf("出棧的語(yǔ)句是%d\n", res); }catch(Exception e) { System.out.println(e.getMessage()); } break; case "exit": scanner.close(); loop = false; break; default: break; } } System.out.println("程序退出"); } } class ArrayStack{ private int maxSize; private int[] stack; private int top = -1; public ArrayStack(int maxSize) { this.maxSize=maxSize; stack = new int[this.maxSize]; } //棧滿(mǎn) public boolean isFull() { return top == maxSize -1; } //??? public boolean isEmpty() { return top == -1; } //出棧 public void push(int value) { if(isFull()) { System.out.println("棧滿(mǎn)"); } top++; stack[top] =value; } //出棧 public int pop() { if(isEmpty()) { throw new RuntimeException("???); } int value = stack[top]; top--; return value; } //遍歷棧 public void list() { if(isEmpty()) { System.out.println("???,沒(méi)有數(shù)據(jù)"); return; } for(int i = top;i>=0;i--) { System.out.printf("stack[%d]=%d\n",i,stack[i]); } } }
測(cè)試結(jié)果
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Springboot?整合?RocketMQ?收發(fā)消息的配置過(guò)程
這篇文章主要介紹了Springboot?整合?RocketMQ?收發(fā)消息,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12Java導(dǎo)出Word文檔的實(shí)現(xiàn)方法詳解
這篇文章主要給大家介紹了關(guān)于Java導(dǎo)出Word文檔的實(shí)現(xiàn)方法,在日常的開(kāi)發(fā)工作中,我們時(shí)常會(huì)遇到導(dǎo)出Word文檔報(bào)表的需求,比如公司的財(cái)務(wù)報(bào)表、醫(yī)院的患者統(tǒng)計(jì)報(bào)表、電商平臺(tái)的銷(xiāo)售報(bào)表等等,需要的朋友可以參考下2023-08-08springboot項(xiàng)目攔截器重定向循環(huán)問(wèn)題的解決
這篇文章主要介紹了springboot項(xiàng)目攔截器重定向循環(huán)問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java引用傳遞實(shí)現(xiàn)方式以及與值傳遞的區(qū)別
這篇文章主要給大家介紹了關(guān)于Java引用傳遞實(shí)現(xiàn)方式以及與值傳遞的區(qū)別的相關(guān)資料,引用傳遞指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)的地址直接傳遞到函數(shù)中,那么在函數(shù)中對(duì)參數(shù)所進(jìn)行的修改,將影響到實(shí)際參數(shù),需要的朋友可以參考下2023-09-09java list,set,map,數(shù)組間的相互轉(zhuǎn)換詳解
這篇文章主要介紹了java list,set,map,數(shù)組間的相互轉(zhuǎn)換詳解的相關(guān)資料,這里附有實(shí)例代碼,具有參考價(jià)值,需要的朋友可以參考下2017-01-01Java編程倒計(jì)時(shí)實(shí)現(xiàn)方法示例
這篇文章主要介紹了Java編程倒計(jì)時(shí)實(shí)現(xiàn)的三個(gè)示例,三種實(shí)現(xiàn)方法,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09Java實(shí)現(xiàn)word文檔轉(zhuǎn)成圖片的示例詳解
本文主要為大家詳細(xì)介紹了如何在Java項(xiàng)目中引用aspose-words和poi-tljar包實(shí)現(xiàn)word文檔轉(zhuǎn)成圖片,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10