一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 實現下壓棧的操作(能動態調整數組大小)

java 實現下壓棧的操作(能動態調整數組大小)

2021-08-03 11:32余閑 Java教程

這篇文章主要介紹了java 實現下壓棧的操作(能動態調整數組大小),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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實現棧的入棧和出棧等基本操作

棧的英文為(stack)

 

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

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

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

棧的基本操作實現

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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:表示添加數據到棧(入棧)");
  System.out.println("pop:表示從棧取出數據(出棧)");
  System.out.println("請輸入你的選擇");
  key = scanner.next();
  switch(key) {
  case "show":
  stack.list();
  break;
  
  case "push":
  System.out.println("請輸入一個數");
  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("棧空,沒有數據");
  return;
 }
 for(int i = top;i>=0;i--) {
  System.out.printf("stack[%d]=%d\n",i,stack[i]);
 }
 }
}

測試結果

java 實現下壓棧的操作(能動態調整數組大小)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/qq_34741911/article/details/88865080

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 波多野结衣在线免费观看 | 王淑兰李思雨李铁柱乡村小说免费 | 99精品全国免费7观看视频 | 涩色网站| 国产良心大作白丝精厕 | 日韩精品一区二区三区视频 | 日本男男gayxxxxx免费 | 色播导航 | 亚洲精品视频在线免费 | 日韩一区二区三区四区不卡 | 国产成人v爽在线免播放观看 | a在线观看欧美在线观看 | 亚洲欧美日韩精品 | 国产精品馆| 极品美女a∨片在线看 | 日本色播| 亚洲成人免费观看 | 欧美日韩亚洲一区二区三区在线观看 | 2018高清国产一道国产 | 亚洲欧美国产另类视频 | 国产另类视频一区二区三区 | 国产新疆成人a一片在线观看 | 午夜AV国产欧美亚洲高清在线 | 精品国产日韩一区三区 | 深夜福利免费在线观看 | 日本高清视频网址 | 亚洲成人在线播放 | 9总探花新品牛仔背带裤 | 国产盗摄美女嘘嘘视频 | 日韩精品一区二区三区中文版 | 午夜精品久久久久久久99 | 国产欧美精品专区一区二区 | 天天操夜夜操狠狠操 | 国产成人看片免费视频观看 | 深夜啪啪网站 | 韩国男女做性全过程视频 | 国产精品露脸国语对白河北 | 双性少爷受糙汉攻h | 天美影视传媒mv直接看 | 91亚洲精品国产自在现线 | 果冻传媒在线播放观看228集 |