栈的定义
- 栈是限定仅在表尾进行插入和删除操作的线性表。
- 栈的特性:
(1)只能从栈的顶部访问数据
(2)数据的访问符合后进先出的原则
栈的顺序存储
1.存储结构
class StackByArray{
private int[] stack;
private int top;
public StackByArray(int stack_size){
stack = new int[stack_size];
top = -1;
}
}
2.进栈操作
public boolean push(int data){
if (top>=stack.length) {
System.out.println("堆栈已满,无法再加入");
return false;
}
else
{
stack[++top] = data;
return true;
}
}
3.出栈操作
public int pop(){
if (isEmpty()) {
return -1;
}
else {
return stack[top--];//先将数据取出,再将堆栈头指针向下移
}
}
栈的链式存储
1.栈的链式存储结构
class Node{
int data;
Node next;
public Node(int data)
{
this.data = data;
this.next = null;
}
}
class StackByLink{
public Node front ;//指向堆栈底端的指针
public Node rear;//指向堆栈顶端的指针
}
2.进栈操作和出栈操作
基本步骤和链表差不多,注意把握栈是后进先出的数据结构。