持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情
- 📝 个人主页:程序员阿红🔥
- 🎉 支持我:点赞👍收藏⭐️留言📝
- 🍓欢迎大家关注哦,互相学习🍓
- 🍋欢迎大家访问哦,互相学习🍋
- 🍑欢迎大家收藏哦,互相学习🍑
02.栈
概念
- 栈(stack)是一种线性数据结构,栈中的元素只能先入后出(First In Last Out,简称FILO)。
- 最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶 (top)。
- 后进先出原则,Last In First Out , LIFO
操作
- 入栈(压栈) 入栈操作(push)就是把新元素放入栈中,只允许从栈顶一侧放入元素,新元素的位置将会成为新的栈顶。
- 出栈(弹栈) 出栈操作(pop)就是把元素从栈中弹出,只有栈顶元素才允许出栈,出栈元素后一个元素将会成为新的栈顶。
手写stack
package dataStruct.stack;
/**
* 用链表实现stack
*/
public class ArraryStack<E> {
int size = 0;
Node<E> head;
public static class Node<E>{
E element;
Node<E> next;
public Node(E element , Node<E> next){
this.element = element;
this.next = next;
}
}
/**
* 入栈操作
* @param element
*/
public void push(E element){
Node node = new Node<E>(element , head);
head = node;
size++;
}
/**
* 出栈操作
* @return
*/
public Node<E> pop(){
if (head == null ){
return head;
}
Node node = head;
head = head.next;
size--;
return node;
}
/**
* 查看栈顶元素
* @return
*/
public Node<E> peek(){
return head;
}
/**
* 查看栈是否为空
* @return
*/
public boolean isEmpty(){
return size == 0;
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
ArraryStack stack = new ArraryStack();
System.out.println("栈是否为空:"+stack.isEmpty());
stack.push("001");
stack.push("002");
stack.push("003");
stack.push("004");
stack.push("005");
System.out.println("出栈:"+stack.pop().element); //005
System.out.println("栈是否为空:"+stack.isEmpty());
stack.push("006");//(栈顶)006,004,003,002,001(栈底)
//查看栈顶元素
System.out.println("栈顶元素:"+stack.peek().element); //006
System.out.println("出栈:"+stack.pop().element);//006
}
}
测试结果
💖💖💖 完结撒花
💖💖💖 路漫漫其修远兮,吾将上下而求索
💖💖💖 写作不易,如果您觉得写的不错,欢迎给博主点赞、收藏、评论、收藏来一波~让博主更有动力吧