栈的实现
- 栈是先进后出,后进先出的一种数据结构。将栈想象成弹夹就可以,而子弹就是每一个数据。
下面用数组来实现一个栈
public class MyStack{
//数组实现栈
private int[] arr;
private int maxSize;
//根据top所指向的位置进行压入和弹出(被限制了)
private int top;
//构造方法
public MyStack(int maxSize){
this.maxSize=maxSize;
arr=new int[maxSize];
top=-1;
}
//压入数据
public void push(int value){
arr[++top]=value;
}
//弹出数据
public int pop(){
return arr[top--];
}
//访问栈顶元素
public int peek(){
return arr[top];
}
//栈是否为空
public boolean isEmpty(){
return (top == -1);
}
//栈是否满了
public boolean isFull(){
return (top == maxSize-1);
}
}
用栈实现字符串逆序
- 如何把String a=”abc”;变成String b=”cba”; 用栈就可以实现
首先把上面MyStack中的int[] 变成 char[]
public class Reverse{
private String input;
public Reverse(String input){
this.input=input;
}
public String doReverse(){
MyStack ms=new MyStack(input.length());
for(int i=0;i<input.length();i++){
char c=input.charAt(i);
ms.push(c);
}
String output="";
while(!ms.isEmpty()){
char ch=ms.pop();
output += ch;
}
return output;
}
}