算法笔记-数组实现栈,队列
2021/6/7 22:20:52
本文主要是介绍算法笔记-数组实现栈,队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
上篇写到了堆排,其实最主要的是使用数组实现堆结构,那么如何使用数组实现栈,队列呢?
首先我们简单了解栈的数据结构:栈是一种先进后出的结构,如下图可以看到按顺序进入的3->2->5,那么取出的顺序则为5->2->3。
如果使用数组实现,那就需要记住我最新插入的数是哪个,然后倒推取出,代码如下:
public class ArrayStack{ private int[] arr; private int size; ArrayStack(int initSize){ if(initSize <= 0) throw new IllegalArgumentException("The init size is less than 0"); arr = new int[initSize]; } public void push(int a){ if(size + 1 >arr.length-1 ){ throw new IllegalArgumentException("The stack is full"); } arr[size++] = a; } public int pop(){ if(size -1 < 0){ throw new IllegalArgumentException("The stack is empty"); } return arr[size--]; } }
代码很简单,就不多说了。
再看看队列,队列和栈不一样,是需要按顺序先进先出的,就像我们食堂排队打饭一样,先到的先打。那么用数组如何实现呢,看代码实现:
public class ArrayQueue{ private int[] arr; private int size; private int write; private int read; ArrayQueue(int initSize){ if(initSize <= 0) throw new IllegalArgumentException("The init size is less than 0"); arr = new int[initSize]; } public void push(int a){ if(size + 1 >arr.length-1 ){ throw new IllegalArgumentException("The queue is full"); } write = write+1 >arr.length-1 ? 0 : write+1; arr[write] = a; size ++; } public int pop(){ if(size <= 0){ throw new IllegalArgumentException("The queue is empty"); } size--; int temp = read; read = read -1 < 0 ? arr.length-1 : read-1; return arr[temp]; } }
这里分别用read来记录取数据的位置,write记录插入数据的位置,数组实现队列有一个复杂的情况就是你取出先进的数据之后,数组前部分就空出来了,所以我们插入到数组最后时,需要回到开头重新插。
这篇关于算法笔记-数组实现栈,队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-06数据结构和算法面试题详解与实战
- 2024-11-06数据结构与算法面试题详解及练习
- 2024-11-06网络请求面试题详解及实战技巧
- 2024-11-06数据结构和算法面试真题详解及备考指南
- 2024-11-06数据结构与算法面试真题解析与练习指南
- 2024-11-06网络请求面试真题详解及实战攻略
- 2024-11-06数据结构和算法大厂面试真题详解与实战
- 2024-11-06数据结构与算法大厂面试真题详解及入门攻略
- 2024-11-06网络请求大厂面试真题详解及应对策略
- 2024-11-06TS大厂面试真题解析与实战指南