数据结构与算法(三)栈&&队列
来源:互联网 发布:饮水机控温器单片机 编辑:程序博客网 时间:2024/06/05 16:14
1. 栈(stack)的构造与应用
栈可以理解为一个箱子,存放数据的时候是先放进去的在底部,后放进去的在顶部,因此满足先进后出,后进先出。
public class MyStack {//底层实现是一个数组private long[] arr;private int top;/* * 默认的构造方法 */public MyStack(){arr=new long[10];top=-1;}/* * 带参数构造方法,参数为数组初始化大小 */public MyStack(int maxsize){arr=new long[maxsize];top=-1;}/* * 添加数据 */public void push(int value){arr[++top]=value;}/* * 移除数据 */public long pop(){return arr[top--];}/* * 查看数据 */public long peek(){return arr[top];}/* * 判断是否为空 */public boolean isEmpty(){return top==-1;}/* * 判断是否满了 */public boolean isFull(){return top==arr.length-1;}}
测试:
public class TestMyStack {public static void main(String[] args) {// TODO Auto-generated method stubMyStack ms=new MyStack(4);ms.push(23);ms.push(12);ms.push(1);ms.push(90);System.out.println(ms.isEmpty());System.out.println(ms.isFull());System.out.println(ms.peek());System.out.println(ms.peek());while(!ms.isEmpty()){System.out.print(ms.pop()+",");}System.out.println();System.out.println(ms.isEmpty());System.out.println(ms.isFull());}}
列队可以考虑为一个火车票窗口买票,先排的人先获得服务,后排的人后获得服务,因此满足先进先出,后进后出(即先来后到)。
public class MyQuene {//底层使用数组private long[] arr;//有效数据大小private int elements;//队头private int front;//队尾private int end;/* * 默认构造方法 */public MyQuene(){arr= new long[10];elements=0;front=0;end =-1;}/* * 带参数的构造方法,参数为数组大小 */public MyQuene(int maxsize){arr=new long[maxsize];elements=0;front=0;end=-1;}/* * 添加数据,从队尾插入 */public void insert(long value){arr[++end]=value;elements++;} //循环列 队//public void insert(long value){//if(end==arr.length-1){//end=-1;//}//arr[++end]=value;//elements++;//}/* * 删除数据,从队头删除 */public long remove(){elements--;return arr[front++];} //循环列队//public long remove(){//long value=arr[front++];//if(front==arr.length){//front=0;//}//elements--;//return value;//}/* * 查看数据,从队头查看 */public long peek(){return arr[front];}/* * 判断是否为空 */public boolean isEmpty(){return elements==0;}/* * 判断是否满了 */public boolean isFull(){return elements==arr.length;}}
测试:
public class TestMyQueue {public static void main(String[] args) {// TODO Auto-generated method stubMyQuene mq=new MyQuene(4);//MyCycleQuene mq=new MyCycleQuene(4);mq.insert(23);mq.insert(45);mq.insert(13);mq.insert(1);System.out.println(mq.isFull());System.out.println(mq.isEmpty());System.out.println(mq.peek());System.out.println(mq.peek());while(!mq.isEmpty()){System.out.print(mq.remove()+",");} //循环列队测试//System.out.println();//mq.insert(23);//mq.insert(45);//mq.insert(13);//mq.insert(1);//while(!mq.isEmpty()){//System.out.print(mq.remove()+",");//}System.out.println();System.out.println(mq.isFull());System.out.println(mq.isEmpty());}}
0 0
- 数据结构与算法(三)栈&&队列
- 数据结构与算法(三) 栈和队列
- Java数据结构与算法《三》栈与队列
- 数据结构小结 (三)栈与队列
- 数据结构学习 栈与队列(三)
- 学习JavaScript数据结构与算法(三)——队列
- 数据结构与算法之三(栈和队列的java实现)
- 数据结构与算法--栈、队列(队列)
- 数据结构和算法分析(三) 表、栈和队列
- 【数据结构与算法】队列
- 数据结构与算法《队列》
- 数据结构与算法-队列
- 数据结构与算法--队列
- 数据结构与算法---队列
- 数据结构与算法-队列
- 学习JavaScript数据结构与算法(一):栈与队列
- 数据结构与算法之----栈与队列
- 数据结构与算法分析:栈与队列
- Java的ID生成策略
- SVN常用命令与分支操作
- 清空一个表中字段的方法
- 補交作業 -- factory
- mac下常用工具的安装配置
- 数据结构与算法(三)栈&&队列
- 随机产生一个类似身份证号码的18位字符串
- JQuery中的html(),text(),val()区别
- python3+PyQt5 创建网络应用-TCP客户端和TCP服务器
- RecyclerView抽取基类,item实现点击,增加分割线
- 中关村维修被黑
- Wininet编程之在windows环境下http协议编程
- 事务、试图、索引、备份和恢复
- C#从Excel导入到MSSQL