您的位置:首页 > 理论基础 > 数据结构算法

Java数据结构_栈

2014-07-29 21:35 686 查看
栈是一种先进后出的数据结构,数组实现栈的操作:

/**

* 基于数组实现栈的操作,访问元素受限,每次只能访问最顶端的元素。

* @author USER

*

*/

class Stack{

private int[] StackArray;

private int top;

private int maxSize;

public Stack(int size) {

maxSize = size;

StackArray = new int[maxSize];

top = -1;

}

//入栈:指针top在插入数据项前递增的

public void push(int value) {

StackArray[++top] = value;

}

//出栈:指针top由最顶端递减

public int pop() {

return StackArray[top--];

}

//查看:只能查看顶端的数据

public int peek() {

return StackArray[top];

}

public boolean isEmpty() {

return (top == -1);

}

public boolean isFull() {

return (top == maxSize-1);

}

}

public class StackApp {

public static void main(String[] args) {

Stack stack = new Stack(10);

stack.push(11);

stack.push(22);

stack.push(33);

stack.push(44);

stack.push(55);

while (!stack.isEmpty()) {

int value = stack.pop();

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

}

System.out.println();

}

}

栈的应用举例:

1、将输入的字符串逆序排列

/**

* 字符串的逆序排列

*/

import java.util.Scanner;

class Stacks{

private char[] StackArray;

private int top;

private int maxSize;

public Stacks(int size) {

maxSize = size;

StackArray = new char[maxSize];

top = -1;

}

//入栈:指针top在插入数据项前递增的

public void push(char value) {

StackArray[++top] = value;

}

//出栈:指针top由最顶端递减

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);

}

}

class Reverse{

private String input;

private String output;

public Reverse(String in) {

input = in;

}

public String DoReverse() {

int StackSize = input.length();

Stacks stack = new Stacks(StackSize);

for (int i = 0; i < StackSize; i++) {

char ch = input.charAt(i);

stack.push(ch);

}

output = "";

while (!stack.isEmpty()) {

char out = stack.pop();

output = output+out;

}

return output;

}

}

public class WordReverse {

public static void main(String[] args) {

Scanner inputScanner = new Scanner(System.in);

String string = inputScanner.next();

Reverse reverse = new Reverse(string);

String string2 = reverse.DoReverse();

System.out.println("Reversed:"+string2);

}

}

结果如:

djsaghsafdsarewq

Reversed: qwerasdfashgasjd

实际上,字符串逆序排列不用栈操作更简单:

import java.util.Scanner;

public class WordReverse1 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

String string = input.next();

int size = string.length();

String output = "";

for (int i = size-1; i >= 0; i--) {

char ch = string.charAt(i);

output = output+ch;

}

System.out.print(output);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: