首页 / JAVA / Java程序开发:模拟栈(先进先出)
Java程序开发:模拟栈(先进先出)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java程序开发:模拟栈(先进先出),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3786字,纯文字阅读大概需要6分钟。
内容图文
![Java程序开发:模拟栈(先进先出)](/upload/InfoBanner/zyjiaocheng/839/6dff73b6ad7c4c25b07e975d6ad2b740.jpg)
模拟栈开发说明
底层使用数组储存数据 栈规则:先进后出,从下往上
对象:栈 行为:进栈与出栈(存储与释放)
栈是用数组模拟的
进栈与出栈
出栈:数组的赋值从数组第一位开始赋值
出栈:数组的删除(将数组长度减一位 复制到 数组长度减一位(从后数))
输出
输出时:使用任意键继续的方式直观的表示进栈与出栈(未有值的部分用X表示)
让变量输入数组getstacks(int a)
在测试类中使用赋值
废话不多说直接上代码!<( ̄︶ ̄)↗[GO!]
程序源码:
学生代码:
栈类↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
/**
* 栈类(数组)
* @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<stacks.length;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<s.stacks.length;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.length;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<this.size;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程序开发:模拟栈(先进先出)全部内容,希望文章能够帮你解决Java程序开发:模拟栈(先进先出)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。