栈的实现:
栈,仅限制在栈的一端进行插入和删除,用于插入与删除的一端为顶部。另一端为底端。
栈,定义为先进后出。
可以看到 插入以a1,a2,a3顺序进行,而删除以an ,an-1顺序进行
同样栈的实现也分为数组实现以及链式实现两种。
首先来介绍一下顺序实现
优点:顺序实现的出栈和入栈的执行速度会更加的快。
缺点:顺序实现的元素数量是有限的。
代码实现:
public class Stack {
private Node stack[];
int top = 0;
Stack(){
stack = new Node [10];
}
Stack(int n){
stack = new Node [n];
}
boolean push(Node node){
if(top == stack.length)
return false;
else{
stack[top] = node;
top ++;
return true;
}
}
boolean remove(){
if(top == 0)
return false;
else{
top --;
return true;
}
}
Node peek(){
return stack[top - 1];
}
}
接下来是链式的实现方法
优点:是没有数量限制的。
缺点:在进行出栈和入栈是会进行的比较慢。
public class LinkStack {
Node top;
int count;
LinkStack(){
count = 0;
top = new Node();
}
void push(Node node){ //增添栈顶元素
top.next = node;
node.pre = top;
top = node;
count ++;
}
boolean remove(){ //移除栈顶元素
if(count == 0)
return false;
else{
top = top.pre;
count --;
return true;
}
}
Node peek(){ //返回栈顶元素但不删除他
return top;
}
}
class Node{
int value;
Node next;
Node pre;
Node(){
value = 0;
}
Node(int v){
value = v;
}
}