数据结构 线性结构篇——栈和队列（2）

public interface Stack<E> {
int getSize();
boolean isEmpty();
void push(E e);
E pop();
E peek();
}

import com.lyy.datasty.Array;
/**
* @program: Data-Structures
* @ClassName ArrayStack
* @description:
* @author: lyy
* @create: 2019-11-20 21:52
* @Version 1.0
* 用户不能看栈中间的元素，只能看到栈顶的元素
**/
public class ArrayStack<E> implements Stack<E>{
Array<E> array;
public ArrayStack(int capacity){
array = new Array<>(capacity);
}
public ArrayStack(){
array = new Array<>();
}
@Override
public int getSize() {
return 0;
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
public int getCapacity(){
return array.getCapacity();
}
@Override
public void push(E e) {
}
@Override
public E pop() {
return array.removeLast();
}
@Override
public E peek() {
return array.getLast();
}
@Override
public String toString() {
StringBuilder res = new StringBuilder();
res.append("Stack：");
res.append('[');
for (int i = 0; i < array.getSize(); i++) {
res.append(array.get(i));
if(i != array.getSize() - 1)
res.append("，");
}
res.append("] top");//哪里是栈顶
return res.toString();
}
}


Stack: [0] top
Stack: [0, 1] top
Stack: [0, 1, 2] top
Stack: [0, 1, 2, 3] top
Stack: [0, 1, 2, 3, 4] top
Stack: [0, 1, 2, 3] top

ArrayStack：

二、队列

2.2 数组队列的实现（顺序存储）

int getSize(); // 获取队列的元素多少

boolean isEmpty(); //查看队列是否为空

void enqueue(E e); //添加队列元素

E dequeue(); //删除队列队首元素

E getFront(); //获取队首队列元素

2.2.1 接口实现

public interface Queue<E> {
int getSize();
boolean isEmpty();
void enqueue(E e);
E dequeue();
E getFront();
}

2.2.2 接口类实现

public class ArrayQueue<E> implements Queue<E> {
private Array<E> array;
public ArrayQueue(int capacity){
array = new Array<>(capacity);
}
public ArrayQueue(){
array = new Array<>();
}
@Override
public int getSize(){
return array.getSize();
}
@Override
public boolean isEmpty(){
return array.isEmpty();
}
public int getCapacity(){
return array.getCapacity();
}
@Override
public void enqueue(E e){
}
@Override
public E dequeue(){
return array.removeFirst();
}
@Override
public E getFront(){
return array.getFirst();
}
@Override
public String toString(){
StringBuilder res = new StringBuilder();
res.append("Queue: ");
res.append("front [");
for(int i = 0 ; i < array.getSize() ; i ++){
res.append(array.get(i));
if(i != array.getSize() - 1)
res.append(", ");
}
res.append("] tail");
return res.toString();
}
public static void main(String[] args) {
ArrayQueue<Integer> queue = new ArrayQueue<>();
for(int i = 0 ; i < 10 ; i ++){
queue.enqueue(i);
System.out.println(queue);
if(i % 3 == 2){
queue.dequeue();
System.out.println(queue+"：================="+(i % 3));
}
}
}
}


2.2.3 执行结果

Queue: front [0] tail
Queue: front [0, 1] tail
Queue: front [0, 1, 2] tail
Queue: front [1, 2] tail：=================2
Queue: front [1, 2, 3] tail
Queue: front [1, 2, 3, 4] tail
Queue: front [1, 2, 3, 4, 5] tail
Queue: front [2, 3, 4, 5] tail：=================2
Queue: front [2, 3, 4, 5, 6] tail
Queue: front [2, 3, 4, 5, 6, 7] tail
Queue: front [2, 3, 4, 5, 6, 7, 8] tail
Queue: front [3, 4, 5, 6, 7, 8] tail：=================2
Queue: front [3, 4, 5, 6, 7, 8, 9] tail

|
16天前
|

【数据结构】树和二叉树的概念及结构

36 3
|
16天前
|

【数据结构】栈和队列

13 1
|
9天前
|

20 2
|
16天前
【数据结构OJ题】用栈实现队列

24 0
|
16天前
【数据结构OJ题】用队列实现栈

26 0
|
25天前
【数据结构OJ题】链表的回文结构

19 0
|
2月前
|

【数据结构与算法 经典例题】使用栈实现队列（图文详解）
【数据结构与算法 经典例题】使用栈实现队列（图文详解）
38 0
|
1月前
|

32 2
|
2月前
|

【数据结构】操作受限的线性表，栈的具体实现
【数据结构】操作受限的线性表，栈的具体实现
33 5
|
2月前
|

【数据结构与算法 经典例题】使用队列实现栈（图文详解）
【数据结构与算法 经典例题】使用队列实现栈（图文详解）
30 1