java里面有栈数据结构_Java数据结构——栈

7e92e2d7cce71d35661729bd9e88a623.png

//=================================================

// File Name :Stack_demo

//------------------------------------------------------------------------------

// Author :Common

//类名:Stack

//属性:

//方法:

class Stack{

private int maxSize;//栈的长度

private long[] stackArray;//创建栈的数组的引用

private int top;//创建栈顶的引用

public Stack(int s) {//构造函数

this.maxSize = s;

stackArray = new long[maxSize]; //创建对象

top = -1;//栈顶等于-1

}

public void push(long j){//入栈操作

stackArray[++top] = j;//先把top=-1自加成0,再入栈

}

public long pop(){

return stackArray[top--];//弹出当前栈顶的元素后,再自减

}

public long peek(){

return stackArray[top];//返回当前栈顶的元素

}

public boolean isEmpty(){//栈顶为-1,即栈为空

return (top == -1);

}

public boolean isFull(){//栈顶为maxSize-1,即栈为满

return (top == maxSize-1);

}

}

//主类

//Function : Stack_demo

public class Stack_demo {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Stack stack_demo = new Stack(10);

stack_demo.push(50);

stack_demo.push(60);

stack_demo.push(70);

stack_demo.push(80);

while(!stack_demo.isEmpty()){//当栈不为空

long value = stack_demo.pop();

System.out.print(value+"、");

}

}

}

88a962ca2c27084fe099b3d8bc015e93.png

//=================================================

// File Name :Word_Reverse

//------------------------------------------------------------------------------

// Author :Common

//类名:Stack_Char

//属性:

//方法:

class Stack_Char{

private int maxSize;//栈的长度

private char[] stackArray;//创建栈的数组的引用

private int top;//创建栈顶的引用

public Stack_Char(int s) {//构造函数

this.maxSize = s;

stackArray = new char[maxSize]; //创建对象

top = -1;//栈顶等于-1

}

public void push(char j){//入栈操作

stackArray[++top] = j;//先把top=-1自加成0,再入栈

}

public char pop(){

return stackArray[top--];//弹出当前栈顶的元素后,再自减

}

public char peek(){

return stackArray[top];//返回当前栈顶的元素

}

public boolean isEmpty(){//栈顶为-1,即栈为空

return (top == -1);

}

public boolean isFull(){//栈顶为maxSize-1,即栈为满

return (top == maxSize-1);

}

}

//类名:Reverse

//属性:

//方法:

class Reverse{

private String input;

private String output;

public Reverse(String input) {//构造函数

super();

this.input = input;

}

public String DoReverse(){

int stackSize = input.length();

Stack_Char stack_demo = new Stack_Char(stackSize);

for(int i=0;i

char ch = input.charAt(i);

stack_demo.push(ch);

}

output = "";//给output赋值,否则会变成nullXXX

while( !stack_demo.isEmpty() ){//把每一个字母出栈

char ch = stack_demo.pop();

this.output += ch;

}

return this.output;

}

}

//主类

//Function : Word_Reverse

public class Word_Reverse {

public static void main(String[] args) {

// TODO 自动生成的方法存根

String input,output;

input = "part";

System.out.println("输入的字符串:"+input);

Reverse rev = new Reverse(input);

output = rev.DoReverse();

System.out.println("输出的字符串:"+output);

}

}

b7af0c1834dae2e5e863fe08c56542c3.png

d4393267ad3535397419424825d3aa19.png

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

//=================================================

// File Name :Brackets_demo

//------------------------------------------------------------------------------

// Author :Common

//类名:BracketsChecker

//属性:

//方法:

class BracketsChecker{

private String input;

public BracketsChecker(String input) {//构造函数

super();

this.input = input;

}

public void Check(){

int stackSize = input.length();

Stack_Char stack_demo = new Stack_Char(stackSize);

for(int i=0;i

char ch = input.charAt(i);//遍历每一个字符

switch(ch){

case '{':

case '[':

case '(':

stack_demo.push(ch);//遇到'{[('就入栈

break;

case '}':

case ']':

case ')':

if( !stack_demo.isEmpty()){

char chx = stack_demo.pop();//遇到'}])'弹出堆栈

if((chx=='{' && ch!='}')||(chx=='[' && ch!=']')||(chx=='(' && ch!=')')){

System.out.println("Error:右括号不应该是"+ch+" at "+i);

}

}

else{

System.out.println("Error:只有右括号"+ch+" at "+i);

}

break;

default:break;

}

}

if( !stack_demo.isEmpty()){//如果栈不为空的话,证明缺少右括号

System.out.println("Error:缺少右括号");

}

}

}

//主类

//Function : Brackets_demo

public class Brackets_demo {

public static void main(String[] args) throws Exception{

// TODO 自动生成的方法存根

String input;

//input = "{[(]}";

System.out.print("输入字符串:");

input = getString();

System.out.println("输入的字符串为:"+input);

BracketsChecker che = new BracketsChecker(input);

che.Check();

}

public static String getString() throws IOException{

InputStreamReader isr = new InputStreamReader(System.in); //把输入的字节流转换成字符流

BufferedReader br = new BufferedReader(isr); //只能接收字符输入流的实例

String str = br.readLine();//一次性从缓冲区中读取内容

return str;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值