1.堆的定义:栈也是一种线性数据结构,它允许从一端入,且从一端出的数据结构,这一端称为栈顶,具备后进先出(Last in first out)LIFO
A-->B-->C依次从栈顶入栈
C-->B-->A依次出栈
2.队列也是一种线性数据结构,是数组的一种子集,他允许元素从一端入(队尾),从另一端出(对首),具有先进先出特点(First in First Out)FIFO
3.自己实现一个栈的过程代码
private MyArray<E> array;
public ArrayStack(){
array=new MyArray<>();
}
public ArrayStack(int capacity){
array=new MyArray<>(capacity);
}
@Override
public void push(E e) {
array.addLast(e);
}
@Override
public E pop() {
return array.removeLast();
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
@Override
public int getSize() {
return array.getSize();
}
@Override
public E peek() {
return array.getLast();
}
4.自己实现一个队列的过程
*/
public class ArrayQueue<E> implements MyQueue<E> {
private MyArray<E> queue;
public ArrayQueue(int capacity){
queue=new MyArray<>(capacity);
}
public ArrayQueue(){
queue=new MyArray<>();
}
@Override
public void enQueue(E e) {
queue.addLast(e);
}
@Override
public E deQueue() {
return queue.removeFirst();
}
@Override
public E getFront() {
return queue.getFirst();
}
@Override
public boolean isEmpty() {
return queue.isEmpty();
}
@Override
public int getSize() {
return queue.getSize();
}
@Override
public int getCapacity() {
return queue.getCapacity();
}
@Override
public String toString() {
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append("capacity is " +queue.getCapacity())
.append(" size is "+queue.getSize())
.append(" front [");
for(int i=0;i<queue.getSize();i++){
if(i !=queue.getSize()-1){
stringBuilder.append((E)queue.get(i)).append(",");
}else{
stringBuilder.append((E)queue.get(i) +"]").append(" tail ");
}
}
return stringBuilder.toString();
}