当前位置: 首页 > article >正文

数据结构——用数组实现栈和队列

目录

用数组实现栈和队列

一、数组实现栈

1.stack类

2.测试

二、数组实现队列

1.Queue类

2.测试


查询——数组:数组在内存中是连续空间

增删改——链表:链表的增删改处理更方便一些

满足数据先进后出的特点的就是栈,先进先出就是队列

用数组实现栈和队列

一、数组实现栈
1.stack类
public class StackDemo {
	private int[] arr;
	private int i=-1;
	
	public StackDemo(int size) {
		arr=new int[size];
	}
	
	//入栈
	public void add(int value) {
        //栈满判断
		if(i==arr.length-1) {
			System.out.println("stack full!");
			return;
		}
		i++;
		arr[i]=value;
	}
	
    //出栈
	public int get() {
		//栈空判断
        if(i==-1) {
			System.out.println("stack empty");
			return -1;
		}
		int data=arr[i];
		i--;
		return data;
	}
}

main方法调用

package 数据结构;

public class test2 {
	public static void main(String[] args) {
		StackDemo stack=new StackDemo(5);
		
		stack.add(1);
		stack.add(2);
		stack.add(6);
		stack.add(3);
		stack.add(9);
		
		System.out.println(stack.get());
		System.out.println(stack.get());
		System.out.println(stack.get());
		System.out.println(stack.get());
		System.out.println(stack.get());
		System.out.println(stack.get());
		
	}
}
2.测试

栈满测试

 栈空测试


二、数组实现队列

注意观察,入队过程中我们使用到另一个“幽灵指针”,这是通过“r%arr.length”来实现的,本质上r的大小是不变的。

1.Queue类
package 数据结构;

public class QueueDemo {
	private int arr[];
	private int c=0;
	private int r=0;
	
	public QueueDemo(int size) {
		arr=new int[size];
	}
	
	public void add(int value) {
		// 栈满判断
		if(r-c==arr.length) {
			System.out.println("Queue full!");
			return;
		}
		arr[r%arr.length]=value;
		r++;
	}
	public int get() {
		// 栈空判断
		if(r==c) {
			System.out.println("Queue empty!");
			return -1;
		}
		
		int data=arr[c%arr.length];
		c++;
		
		return data;
	}
	
}

 main方法调用

package 数据结构;

public class test3 {
	public static void main(String[] args) {
		QueueDemo queue=new QueueDemo(5);
		
		queue.add(1);
		queue.add(2);
		queue.add(6);
		queue.add(3);
		queue.add(9);
		queue.add(10);
		
		
		System.out.println(queue.get());
		System.out.println(queue.get());
		System.out.println(queue.get());
		System.out.println(queue.get());
		System.out.println(queue.get());
		queue.add(4);
		System.out.println(queue.get());
		System.out.println(queue.get());
	}
}
2.测试


http://www.kler.cn/a/411702.html

相关文章:

  • C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
  • Ubuntu20.04运行msckf_vio
  • 极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【二】
  • 第R4周:LSTM-火灾温度预测(TensorFlow版)
  • 手搓人工智能—聚类分析(下)谱系聚类与K-mean聚类
  • 数据结构--AVL树(平衡二叉树)
  • 鸿蒙操作系统(HarmonyOS)
  • html select下拉多选 修改yselect.js插件实现下拉多选,搜索,限制选中,默认回显等操作
  • c#基础练习71-75
  • 鸿蒙安全控件之位置控件简介
  • Git指令大全
  • 三维地形图计算软件(三)-原基于PYQT5+pyqtgraph旧代码
  • JSON数据转化为Excel及数据处理分析
  • 15.postgresql--jsonb 数组进行打平,过滤
  • 18:(标准库)DMA二:DMA+串口收发数据
  • 异或操作解决一些问题
  • 【附录】Rust国内镜像设置
  • 【腾讯云】AI驱动TDSQL-C Serveress 数据库技术实战营-如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图
  • Github 2024-11-26 Python开源项目日报Top10
  • C#里怎么样使用BinaryReader和BinaryWriter类?
  • MATLAB 中有关figure图表绘制函数设计(论文中常用)
  • 英语知识在线教学:Spring Boot网站构建
  • ✅ Qt流式布局
  • Spring |(五)IoC/DI的注解开发
  • 神经网络中的损失函数(Loss Function)
  • 2024赣ctf-web -wp