首页 > 其他 > 详细

栈和队列

时间:2020-03-14 10:34:12      阅读:63      评论:0      收藏:0      [点我收藏+]

1.使用数组模拟栈(先进后出)

深度理解请查看https://www.cnblogs.com/bigsai/p/11357229.html

技术分享图片
 1 package demo2;
 2 
 3 public class MyStack {
 4     
 5     //栈的底层我们使用数组来存储数据
 6     int[] elements;
 7 
 8     public MyStack() {
 9         elements = new int[0];
10     }
11     
12     //压入元素
13     public void push(int element) {
14         // 创建一个新的数组
15         int[] newArr = new int[elements.length + 1];
16         // 把原数组中的元素复制到新数组中
17         for (int i = 0; i < elements.length; i++) {
18             newArr[i] = elements[i];
19         }
20         // 把添加的元素放入新数组中
21         newArr[elements.length] = element;
22         // 使用新数组替换旧数组
23         elements = newArr;
24     }
25     
26     //取出栈顶元素
27     public int pop() {
28         //栈中没有元素
29         if(elements.length==0) {
30             throw new RuntimeException("stack is empty");
31         }
32         //取出数组的最后一个元素
33         int element = elements[elements.length-1];
34         //创建一个新的数组
35         int[] newArr = new int[elements.length-1];
36         //原数组中除了最后一个元素的其它元素都放入新的数组中
37         for(int i=0;i<elements.length-1;i++) {
38             newArr[i]=elements[i];
39         }
40         //替换数组
41         elements=newArr;
42         //返回栈顶元素
43         return element;
44     }
45     
46     //查看栈顶元素
47     public int peek() {
48         //栈中没有元素
49         if(elements.length==0) {
50             throw new RuntimeException("stack is empty");
51         }
52         return elements[elements.length-1];
53     }
54     
55     //判断栈是否为空
56     public boolean isEmpty() {
57         return elements.length==0;
58     }
59     
60 }
数组模拟栈

 

2.使用数组模拟队列(先进先出)

深度理解请查看https://www.cnblogs.com/bigsai/p/11363071.html

技术分享图片
 1 package demo2;
 2 
 3 import javax.swing.text.DefaultStyledDocument.ElementSpec;
 4 
 5 public class MyQueue {
 6     
 7     int[] elements;
 8     
 9     public MyQueue() {
10         elements=new int[0];
11     }
12     
13     //入队
14     public void add(int element) {
15         // 创建一个新的数组
16         int[] newArr = new int[elements.length + 1];
17         // 把原数组中的元素复制到新数组中
18         for (int i = 0; i < elements.length; i++) {
19             newArr[i] = elements[i];
20         }
21         // 把添加的元素放入新数组中
22         newArr[elements.length] = element;
23         // 使用新数组替换旧数组
24         elements = newArr;
25     }
26     
27     //出队
28     public int poll() {
29         //把数组中的第0个元素取出来
30         int element = elements[0];
31         //创建一个新的数组
32         int[] newArr = new int[elements.length-1];
33         //复制原数组中的元素到新数组中
34         for(int i=0;i<newArr.length;i++) {
35             newArr[i]=elements[i+1];
36         }
37         //替换数组
38         elements=newArr;
39         return element;
40     }
41     
42     //判断队列是否为空
43     public boolean isEmpty() {
44         return elements.length==0;
45     }
46 
47 }
数组模拟队列

 

栈和队列

原文:https://www.cnblogs.com/amazingyr/p/12490293.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!