gpt4 book ai didi

java 实现下压栈的操作(能动态调整数组大小)

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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 。

最后此篇关于java 实现下压栈的操作(能动态调整数组大小)的文章就讲到这里了,如果你想了解更多关于java 实现下压栈的操作(能动态调整数组大小)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com