データ構造 〜 第3章 スタックとキュー

スタックの実装。

package intro;

public class Stack {
	Node top;
	
	Object pop(){
		if(top != null){
			Object item = top.data;
			top = top.next;
			return item;
		}
		return null;
	}
	
	void push(Object item){
		Node t = new Node(item);
		t.next = top;
		top = t;
	}
	
	Object peek(){
		return top.data;
	}
}

キューの実装。

package intro;

public class Queue {
	Node first, last;
	
	void enqueue(Object item){
		if(first == null){
			last =  new Node(item);
			first = last;
		}else{
			last.next = new Node(item);
			last = last.next;
		}
	}
	
	Object dequeue(){
		if(first != null){
			Object item = first.data;
			first = first.next;
			return item;
		}
		return null;
	}
}

確認。

package intro;

public class Test {

	public static void main(String[] args) {
		Stack stack = new Stack();
		String str = "a";
		stack.push(str);
		stack.push(str+"1");
		stack.push(str+"2");
		
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		
		System.out.println();
		
		Queue queue = new Queue();
		queue.enqueue(str);
		queue.enqueue(str+"1");
		queue.enqueue(str+"2");
		
		System.out.println(queue.dequeue());
		System.out.println(queue.dequeue());
		System.out.println(queue.dequeue());
	}

}