🔎前言
本期文章讲会从之前学过的顺序表,链表基础上,进行栈与队列的讲述,由于博主也是学习状态,如有不对的地方,希望多多指正!相互学习,共同进步哦!
📘 博客主页:to Keep博客主页
🙆欢迎关注,👍点赞,📝留言评论
⏳首发时间:2021年12月26日
📨 博主码云地址:博主码云地址
📕参考书籍:java核心技术 卷1
📢编程练习:牛客网+力扣网
🙋 栈的概念
栈其实本质就是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素要遵循后进先出,先进后出的原则。
👇 栈的实现(顺序表实现)
👉判断栈是否为空
public class Mystack {
private int[] array = new int[50];
private int size = 0;
//判断是否为空
public boolean isEmpty(){
return size==0;
}
}
👉 返回栈的长度
public class Mystack {
private int[] array = new int[50];
private int size = 0;
public int size(){
return size;
}
}
✨进栈
public class Mystack {
private int[] array = new int[50];
private int size = 0;
//进栈
public void push(int val){
array[size]=val;
size++;
}
}
✨出栈
public class Mystack {
private int[] array = new int[50];
private int size = 0;
//出栈
public int pop(){
if (!isEmpty()){
int temp = array[size];
size--;
return temp;
}else {
throw new RuntimeException("空栈");
}
}
}
⭐️获取栈顶元素
public class Mystack {
private int[] array = new int[50];
private int size = 0;
//获取栈顶元素
public int peek(){
if (!isEmpty()){
return array[size-1];
}else{
throw new RuntimeException("空栈");
}
}
}
🙋队列的概念
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出.
入队列:进行插入操作的一端称为队尾(Tail/Rear)
出队列:进行删除操作的一端称为队头
👇 队列的实现(链表实现)
队列中的判断是否为空与获取队列的长度是与栈一样的,这里就不在进行重复的书写
✨入队列
class node{
public node next;
public int val;
public node(int val){
this.val=val;
}
}
public class Myqueue {
public node head;
private node tail;
private int size;
//判断是否为空
public boolean isEmpty(){
return size == 0;
}
//获取队列的长度
public int size(){
return size;
}
//入队列
public void enquene(int val){
node cur = new node(val);
if (head==null){
head=cur;
}else{
tail.next=cur;
}
tail=cur;
size++;
}
}
✨出队列
//出队列
public int dequene(){
if (size==0){
throw new RuntimeException("空队列");
}
node oldhead = head;
head=head.next;
if(head==null){
tail=null;//如果头结点为空,那么尾节点也是不能有任何指向的
}
size--;
return oldhead.val;
}
⭐️获取队列头元素
//获取队列头元素
public int peek(){
if (size==0){
throw new RuntimeException("空队列");
}
return head.val;
}
🌱 总结
无论是栈还是队列,其实主要就是要掌握它们底层的数据结构,链表以及顺序表才是关键。另外这些知识基本的原理,下一步预计就是得去刷些栈与队列的习题进行巩固。