模拟栈开发说明
底层使用数组储存数据 栈规则:先进后出,从下往上
对象:栈 行为:进栈与出栈(存储与释放)
栈是用数组模拟的
进栈与出栈
出栈:数组的赋值从数组第一位开始赋值
出栈:数组的删除(将数组长度减一位 复制到 数组长度减一位(从后数))
输出
输出时:使用任意键继续的方式直观的表示进栈与出栈(未有值的部分用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