模拟栈 java_Java程序开发:模拟栈(先进先出)

模拟栈开发说明

底层使用数组储存数据 栈规则:先进后出,从下往上

对象:栈 行为:进栈与出栈(存储与释放)

栈是用数组模拟的

进栈与出栈

出栈:数组的赋值从数组第一位开始赋值

出栈:数组的删除(将数组长度减一位 复制到 数组长度减一位(从后数))

输出

输出时:使用任意键继续的方式直观的表示进栈与出栈(未有值的部分用X表示)

让变量输入数组getstacks(int a)

在测试类中使用赋值

废话不多说直接上代码!

程序源码:

学生代码:

栈类↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

/**

* 栈类(数组)

* @author DELL

*

*/

import java.util.Scanner;

public class Zhan {

private int []stacks=new int[5];

//栈的赋值(进栈)

public void setStacks(Zhan s){

@SuppressWarnings("resource")

Scanner sc=new Scanner(System.in);

System.out.println("入栈将在键入任意值后开始");

sc.nextLine();

for(int i=0;i

System.out.println("请输入您所要入栈的整数...");

int ru=sc.nextInt();

System.arraycopy(stacks, 0, stacks, 1,i);

stacks[0]=ru;

s.showZhan(stacks);

if(i==5){

break;

}

}

}

public int[] getStacks(){

return this.stacks;

}

//栈的删除(出栈)

public void outStacks(Zhan s){

@SuppressWarnings("resource")

Scanner sc=new Scanner(System.in);

System.out.println("出栈将在键入任意值后开始");

sc.nextLine();

for(int i=0;i

System.out.println("出栈的元素为:"+s.stacks[4]);

//用一维数组的复制来模拟出栈

System.arraycopy(stacks, i, stacks, i+1, stacks.length-i-1);

stacks[i]=0;

showZhan(stacks);

}

}

//清栈

public void cle(Zhan s){

for(int i=0;i

s.stacks[i]=0;

}

showZhan(s.stacks);

System.out.println("栈已清空......");

}

//栈的输出

public void showZhan(int []stacks){

@SuppressWarnings("resource")

Scanner sc=new Scanner(System.in);

System.out.println("栈的层数\t栈");

for(int i=stacks.length-1;i>=0;i--){

System.out.print(i+1+"\t");

if(stacks[i]==0){

System.out.println("X");//X表示栈为空,未使用。

continue;

}

System.out.println(stacks[i]);

}

System.out.println("请按任意键继续...");

@SuppressWarnings("unused")

String a=sc.nextLine();

}

}

测试类:↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

/**

* 模拟栈的测试类

* @author DELL

*

*/

public class StacksTest {

public static void main(String []args){

StacksType sta=new StacksType();

sta.push(100);

sta.push(13);

sta.push(15);

sta.push(14);

sta.push(18);

System.out.println("该栈中的元素个数为"+sta.getSize());

System.out.println("出栈的元素为:"+sta.pop());

System.out.println("该栈中的元素个数为"+sta.getSize());

sta.pop();

System.out.println("该栈中的元素个数为"+sta.getSize());

sta.pop();

System.out.println("该栈中的元素个数为"+sta.getSize());

sta.pop();

System.out.println("该栈中的元素个数为"+sta.getSize());

sta.pop();

System.out.println("该栈中的元素个数为"+sta.getSize());

sta.pop();

System.out.println("该栈中的元素个数为"+sta.getSize());

}

}

教师代码:

栈类↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

/**

* 模拟栈的实现,储存非0的整型值(教师版)

* @author DELL

*

*/

public class StacksType {

private int []arr;

private int length =5;

private int size;

public StacksType(){

arr =new int[length];

}

public StacksType(int initLength){

if(initLength>length){

length = initLength;

}

arr =new int[length];

}

//进栈

public void push(int i){

if(length==size){

System.out.println("栈已满......");

return ;

}

if(i==0){

System.out.println("该栈不能存储整形默认值0");

return ;

}

arr[size++]=i;

}

//出栈

public int pop(){

if(size==0){

System.out.println("栈已空......");

return 0;

}

int temp =arr[size-1];

arr[size-1]=0;

size--;

return temp;

}

//清除栈中所有元素

public void clear(){

for(int i=0;i

arr[i]=0;

}

this.size=0;

}

//获取栈中实际元素个数

public int getSize(){

return this.size;

}

}

测试类↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

/**

* 测试类

* @author DELL

*

*/

public class Test01 {

public static void main(String []args){

Zhan s=new Zhan();

//入栈

s.setStacks(s);

//出栈

s.outStacks(s);

//清栈

s.setStacks(s);

s.cle(s);

}

}

标签:Java,sta,int,程序开发,System,public,println,先进先出,out

来源: https://blog.csdn.net/weixin_43712330/article/details/88082169

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值