栈的实现:
栈,仅限制在栈的一端进行插入和删除,用于插入与删除的一端为顶部。另一端为底端。
栈,定义为先进后出。
可以看到 插入以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; } }
时间: 2024-10-11 00:34:02