最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 實(shí)現(xiàn)下壓棧的操作(能動(dòng)態(tài)調(diào)整數(shù)組大小)

 更新時(shí)間:2021年02月04日 09:57:16   作者:余閑  
這篇文章主要介紹了java 實(shí)現(xiàn)下壓棧的操作(能動(dòng)態(tài)調(diào)整數(shù)組大小),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

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)行的一種特殊線性表。允許插入和刪除的一端,為變化的一端,稱為棧頂(Top),另一端為固定的一端,稱為棧底(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("出棧的語句是%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]; 
 }
 
  //棧滿
 public boolean isFull() {
 return top == maxSize -1;
 
 }
  //???
 public boolean isEmpty() {
 return top == -1;
 
 }
 //出棧
 public void push(int value) {
 if(isFull()) {
  System.out.println("棧滿");
 }
 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("棧空,沒有數(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)文章

  • Java實(shí)現(xiàn)平滑加權(quán)輪詢算法之降權(quán)和提權(quán)詳解

    Java實(shí)現(xiàn)平滑加權(quán)輪詢算法之降權(quán)和提權(quán)詳解

    所有負(fù)載均衡的場(chǎng)景幾乎都會(huì)用到這個(gè)平滑加權(quán)輪詢算法,下面這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)平滑加權(quán)輪詢算法之降權(quán)和提權(quán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • SpringBoot3整合Swagger3時(shí)出現(xiàn)Type javax.servlet.http.H的ttpServletRequest not present錯(cuò)誤解決方法

    SpringBoot3整合Swagger3時(shí)出現(xiàn)Type javax.servlet.http.H的ttpSe

    這篇文章主要介紹了SpringBoot3整合Swagger3時(shí)出現(xiàn)Type javax.servlet.http.H的ttpServletRequest not present錯(cuò)誤解決方法,文中有詳細(xì)的解決方法,需要的朋友可以參考下
    2025-01-01
  • SpringBoot中使用@Async實(shí)現(xiàn)異步任務(wù)調(diào)用詳解

    SpringBoot中使用@Async實(shí)現(xiàn)異步任務(wù)調(diào)用詳解

    這篇文章主要介紹了SpringBoot中使用@Async實(shí)現(xiàn)異步任務(wù)調(diào)用詳解,一個(gè)可以無需等待被調(diào)用函數(shù)的返回值就讓操作繼續(xù)進(jìn)行的方法(來自百度百科),即程序在順序執(zhí)行時(shí),不等待異步調(diào)用的語句返回結(jié)果就執(zhí)行后面的程序,需要的朋友可以參考下
    2023-12-12
  • JAVA實(shí)現(xiàn)簡(jiǎn)單系統(tǒng)登陸注冊(cè)模塊

    JAVA實(shí)現(xiàn)簡(jiǎn)單系統(tǒng)登陸注冊(cè)模塊

    這篇文章主要介紹了一個(gè)簡(jiǎn)單完整的登陸注冊(cè)模塊的實(shí)現(xiàn)過程,文章條理清晰,在實(shí)現(xiàn)過程中加深了對(duì)相關(guān)概念的理解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-07-07
  • Mybatis-plus操作json字段實(shí)戰(zhàn)教程

    Mybatis-plus操作json字段實(shí)戰(zhàn)教程

    這篇文章主要介紹了Mybatis-plus操作json字段實(shí)戰(zhàn)教程,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java運(yùn)用SWT插件編寫桌面記事本應(yīng)用程序

    Java運(yùn)用SWT插件編寫桌面記事本應(yīng)用程序

    這篇文章主要為大家介紹了一個(gè)Java項(xiàng)目實(shí)戰(zhàn),一步步教你實(shí)現(xiàn)記事本,步驟很詳細(xì),運(yùn)用SWT插件手把手編寫記事本,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Java實(shí)現(xiàn)Fast DFS、服務(wù)器、OSS上傳功能

    Java實(shí)現(xiàn)Fast DFS、服務(wù)器、OSS上傳功能

    這篇文章主要介紹了Java實(shí)現(xiàn)Fast DFS、服務(wù)器、OSS上傳功能,在實(shí)際的業(yè)務(wù)中,可以根據(jù)客戶的需求設(shè)置不同的文件上傳需求,支持普通服務(wù)器上傳+分布式上傳(Fast DFS)+云服務(wù)上傳OSS(OSS),需要的朋友可以參考下
    2024-04-04
  • Java 實(shí)現(xiàn)漢字轉(zhuǎn)換為拼音的實(shí)例

    Java 實(shí)現(xiàn)漢字轉(zhuǎn)換為拼音的實(shí)例

    這篇文章主要介紹了Java 實(shí)現(xiàn)漢字轉(zhuǎn)換為拼音的實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作

    IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作

    這篇文章主要介紹了IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • MyBatis使用接口映射的方法步驟

    MyBatis使用接口映射的方法步驟

    映射器是MyBatis中最核心的組件之一,本文主要介紹了MyBatis使用接口映射的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07

最新評(píng)論

贵定县| 孙吴县| 阿合奇县| 杭锦后旗| 阜平县| 建瓯市| 沈阳市| 托克逊县| 陆河县| 敦化市| 冀州市| 石渠县| 鹤岗市| 靖安县| 普兰店市| 惠来县| 泽库县| 襄垣县| 囊谦县| 舒城县| 禹州市| 遂宁市| 浏阳市| 恩平市| 平远县| 万年县| 昌黎县| 宣汉县| 即墨市| 沙田区| 怀集县| 虹口区| 东宁县| 布尔津县| 友谊县| 龙门县| 伊春市| 濉溪县| 中卫市| 惠水县| 汽车|