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

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

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

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

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() {}
  }
}

補充:Java實現(xiàn)棧的入棧和出棧等基本操作

棧的英文為(stack)

棧是一個先入后出(FILO-First In Last Out)的有序列表。

棧(stack)是限制線性表中元素的插入和刪除只能在線性表的同一端進行的一種特殊線性表。允許插入和刪除的一端,為變化的一端,稱為棧頂(Top),另一端為固定的一端,稱為棧底(Bottom)。

根據(jù)棧的定義可知,最先放入棧中元素在棧底,最后放入的元素在棧頂,而刪除元素剛好相反,最后放入的元素最先刪除,最先放入的元素最后刪除

棧的基本操作實現(xiàn)

package com.atguigu.stack; 
import java.util.Scanner; 
public class ArrayStackDemo {
 public static void main(String[] args) {
 //測試
 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("請輸入你的選擇");
  key = scanner.next();
  switch(key) {
  case "show":
  stack.list();
  break;
  
  case "push":
  System.out.println("請輸入一個數(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]);
 }
 }
}

測試結果

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

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

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

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

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

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

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

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

    JAVA實現(xiàn)簡單系統(tǒng)登陸注冊模塊

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

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

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

    Java運用SWT插件編寫桌面記事本應用程序

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

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

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

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

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

    IDEA之啟動參數(shù),配置文件默認參數(shù)的操作

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

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

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

最新評論

北京市| 鄯善县| 修文县| 屏边| 四川省| 如东县| 白银市| 富川| 儋州市| 余干县| 吉水县| 正镶白旗| 潼关县| 黎平县| 洪江市| 兖州市| 松溪县| 贵南县| 建水县| 江陵县| 同心县| 青州市| 申扎县| 沂源县| 陇南市| 浦东新区| 龙里县| 陵川县| 蛟河市| 井冈山市| 子长县| 勃利县| 慈溪市| 汝南县| 临西县| 内丘县| 杭锦旗| 汝阳县| 宣恩县| 桂平市| 施甸县|