java 栈

栈一次只允许访问一个数据项:即最后插入的数据项。移除这个数据项后才能访问倒数第二个数据项,依此类推。栈的数据项遵循后进先出的次序。
1.栈的实现代码

package com.gjy.stack;


public class Stack {
private int maxSize;
private char [] stackArray;
private int top;

public Stack(int s){
maxSize = s;
stackArray = new char[maxSize];
top = -1;
}

// 添加数据
public void push(char j){
stackArray[++top] = j;
}

// 删除数据
public char pop(){
return stackArray[top--];
}

// 获取数据
public char peek(){
return stackArray[top];
}

// 判断栈是否为空
public boolean isEmpty(){
return (top == -1);
}

// 判断栈是否已满
public boolean isFull(){
return (top == maxSize-1);
}

}



下面以一个输入字符串的倒序输出为例:

package com.gjy.stack;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Reverser {
private String input;
private String output;

public Reverser(String in){
input = in;
}

public String doRve(){
int stackSize = input.length();
Stack stack = new Stack(stackSize);

for(int i=0;i<input.length();i++){
char c = input.charAt(i);
stack.push(c);
}

output = "";

while(!stack.isEmpty()){
char c = (char) stack.pop();
output = output + c;
}

return output;
}

public static void main(String[] args) {
String input,output;

while (true) {
System.out.println("Enter a String: ");
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
try {
input = buf.readLine();

if ("".equals(input.trim())||input==null){
break;
}

Reverser reverser = new Reverser(input);
output = reverser.doRve();
System.out.println(output);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值