线性结构——栈和队列

Posted pengao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性结构——栈和队列相关的知识,希望对你有一定的参考价值。

栈类

 1 public class MyStack<T> {
 2     //栈的大小
 3     private int size;
 4     //存放栈的数组
 5     private Object[] data;
 6     
 7     /**
 8      * 无参构造方法,初始化数组大小
 9      */
10     public MyStack() {
11         size = -1;
12         data = new Object[10];
13     }
14     
15     /**
16      * 有参构造方法,自定义数组大小
17      */
18     public MyStack(int len) {
19         size = 0;
20         if(len < 0) {
21             len = 5;
22         }
23         data = new Object[len];
24     }
25     
26     /**
27      * 出栈
28      * @param t
29      * @return
30      */
31     public boolean push(T t) {
32         if(size == data.length) {
33             return false;
34         }else {
35             data[++size] = t;
36             return true;
37         }
38     }
39     
40     /**
41      * 入栈
42      * @return
43      */
44     public T pop() {
45         if(size == data.length) {
46             return null;
47         }else {
48             return (T) data[size--];
49         }
50     }
51     
52     /**
53      * 查看栈顶元素
54      * @return
55      */
56     public T peek() {
57         if(size == data.length) {
58             return null;
59         }else {
60             return (T) data[size];
61         }
62     }
63     
64     /**
65      * 查看数组大小
66      * @return
67      */
68     public int size() {
69         return size;
70     }

 

队列类
 1 public class MyQueue<T> {
 2     //存放队列的数组
 3     private Object[] data;
 4     
 5     /**
 6      * 无参构造方法,初始化数组大小
 7      */
 8     public MyQueue() {
 9         data = new Object[0];
10     }
11     
12     //入队
13     public void add(T t) {
14         // 创建一个新的数组
15         Object[] newArr = new Object[data.length + 1];
16         // 把原数组中的元素复制到新数组中
17         for (int i = 0; i < data.length; i++) {
18             newArr[i] = data[i];
19         }
20         // 把添加的元素放入新数组中
21         newArr[data.length] = t;
22         // 使用新数组替换旧数组
23         data = newArr;
24     }
25     
26     //出队
27     public T poll() {
28         //把数组中的第0个元素取出来
29         T element = (T) data[0];
30         //创建一个新的数组
31         Object[] newArr = new Object[data.length - 1];
32         //复制原数组中的元素到新数组中
33         for(int i = 0; i < newArr.length;i++) {
34             newArr[i] = data[i + 1];
35         }
36         //替换数组
37         data=newArr;
38         return element;
39     }
40     
41     //判断队列是否为空
42     public boolean isEmpty() {
43         return data.length == 0;
44     }
45     
46     /**
47      * 查看数组大小
48      * @return
49      */
50     public int size() {
51         return data.length;
52     }

 

以上是关于线性结构——栈和队列的主要内容,如果未能解决你的问题,请参考以下文章

数据结构复习--栈和队列--栈

栈和队列

数据结构之栈和队列

数据结构与算法系列研究二——栈和队列

数据结构《三》栈与队列的实现

线性结构——栈和队列