凡办大事,以识为主,以才为辅;凡成大事,人谋居半,天意居半。—曾国藩
一.关于栈。
什么是栈?
答:栈是一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,所以我们也常常说栈是一种运算受限的线性表。栈是按照先进后出的原则存储数据的,所以我们如果把12345这五个数字依次压入栈,会发现出栈顺序依次变成54321。
二.对比队列,学习栈。
说到栈,我会想到之前学习的队列。栈和队列有相同之处,如果把栈和队列对比学习,那么,应该是这样的。
三.队列和栈的代码对比。
1.队列代码块
2.栈的代码块
四.栈的应用实例。
package LeedCode题目练习;
public class StackTest {
public static void main(String[] args) {
stack s=new stack(5);//栈大小为5
s.show();
//添加五个数
s.AddNumber(6);
s.AddNumber(8);
s.AddNumber(1);
s.AddNumber(2);
s.AddNumber(3);
s.show();//展示着五个数
s.AddNumber(8);//再增加第六个数
s.show();//因为栈大小为5,第6个数添加失败
System.out.println("====");
System.out.println("取出:"+s.getnumber());//取数,最后进去的最先出来
s.show();
System.out.println("====");
System.out.println("取出:"+s.getnumber());
s.show();
System.out.println("====");
System.out.println("取出:"+s.getnumber());
s.show();
System.out.println("====");
System.out.println("取出:"+s.getnumber());
s.show();
System.out.println("====");
System.out.println("取出:"+s.getnumber());
s.show();
}
}
class stack{
public int MaxSize;
public int[] arry;
public int rear;
public stack(int maxSize) {
MaxSize = maxSize;
arry=new int[MaxSize];
rear=-1;
}
//是否栈满
public boolean isFull() {
return rear==MaxSize-1;
}
//是否栈为空
public boolean isEmtry() {
return rear==-1;
}
public void AddNumber(int number) {
if(isFull()) {
System.out.println("栈满了");
}else {
rear++;
arry[rear]=number;
}
}
public int getnumber() {
if(isEmtry()) {
return -1;
}
int value=arry[rear];
rear--;
return value;
}
public void show() {
if(isEmtry()) {
System.out.println("栈内没有数据了,去添加吧!");
}
for(int i=0;i<=rear;i++) {
System.out.println(arry[i]);
}
}
}
五.运行结果
六.总结
这应该算是入门栈,栈还有很多重要的知识点需要去了解。