数据结构与算法10-栈和队列

 栈由于是临时存储,所以通常大小很小

StackX类方法:

构造方法根据参数规定的容量创建一个新栈,栈的域包括表示最大容量的变量。数组本身以及变量top,他存储栈顶元素的下标。

push()方法:

将top自增一,使它指向原顶端数据项上面的一个位置。并在这个位置上存储一个数据项。再次提醒,top是插入数据项之前递增的。

pop()方法:

返回top标识的数据项值,然后top减一。


class StackX {
	private int maxSize;
	private long[] stackArray;
	private int top;
	public StackX(int s)
	{
		maxSize = s;
		stackArray = new long[maxSize];
		top = -1;
	}
	public void push(long j)
	{
		stackArray[++top] = j;
	}
	public long pop()
	{
		return stackArray[top--];
	}
	public long peek()
	{
		return stackArray[top];
	}
	public boolean isEmpty()
	{
		return (top == -1);
	}
	public boolean isFull() {
		return (top == maxSize-1);
	}
}
class StackApp
{
	public static void main(String[] args) {
		StackX theStack = new StackX(10);
		theStack.push(10);
		theStack.push(20);
		theStack.push(30);
		theStack.push(40);
		while(!theStack.isEmpty())
		{
			long value = theStack.pop();
			System.out.print(value);
			System.out.print(" ");
		}
		System.out.println("end");
	}
}
40 30 20 10 end

单词逆序:

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

class StackX1 {
	private int maxSize;
	private long[] stackArray;
	private int top;
	public StackX1(int s)
	{
		maxSize = s;
		stackArray = new long[maxSize];
		top = -1;
	}
	public void push(long j)
	{
		stackArray[++top] = j;
	}
	public long pop()
	{
		return stackArray[top--];
	}
	public long peek()
	{
		return stackArray[top];
	}
	public boolean isEmpty()
	{
		return (top == -1);
	}
	public boolean isFull() {
		return (top == maxSize-1);
	}
}
class Reverser
{
	private String input;
	private String output;
	public Reverser(String in)
	{
		input = in;
	}
	public String doRev()
	{
		int StackSize = input.length();
		StackX1 theStack = new StackX1(StackSize);
		for(int j=0;j<input.length();j++)
		{
			char ch = input.charAt(j);
			theStack.push(ch);
		}
		output = " ";
		while(!theStack.isEmpty())
		{
			char ch = (char) theStack.pop();
			output = output + ch;
		}
		return output;
	}
	}
class ReverseApp
{
	public static void main(String[] args) throws IOException {
		String input,output;
		while(true)
		{
			System.out.print("enter");
			System.out.flush();
			input = getString();
			if(input.equals(" "))
				break;
			Reverser theReverser = new Reverser(input);
			output = theReverser.doRev();
			System.out.println(output);
		}
	}

	private static String getString() throws IOException{
		// TODO Auto-generated method stub
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);
		String s = br.readLine();
		return s;
	}

	
}
enter kdjfklajkfaj
 jafkjalkfjdk 
enter klda;kflakf;kfa
 afk;fkalfk;adlk 
enter

 

转载于:https://my.oschina.net/u/3829307/blog/1884294

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值