2012.11.14 23:05

이번에 만든 스택은 연결 스택으로, 자료 노드들이 메모리가 허용되는한 늘어날 수 있다.














package com.flask.utils;

public class Node<T> {
	
	private Node<T> next;
	private Node<T> before;
	private T data;
	
	public Node() {
	}
	
	public Node(Node<T> before, Node<T> next) {
		connectToBefore(before);
		connectToNext(next);
	}
	
	public Node(T data) {
		setData(data);
	}
	
	public void setData(T data) {
		this.data = data;
	}
	
	public T getData() {
		return data;
	}
	
	public void connectToNext(Node<T> node) {
		next = node;
	}
	
	public void connectToBefore(Node<T> node) {
		before = node;
	}
	
	public Node<T> getNextNode() {
		return next;
	}
	
	public Node<T> getBeforeNode(){
		return before;
	}
	
	public void clearData() {
		this.data = null;
	}
	
	public void clearConnections() {
		connectToBefore(null);
		connectToNext(null);
	}
	
	public void release() {
		clearData();
		clearConnections();
	}
	
}




package com.flask.utils;

public class Stack<T> {

	Node<T> head = new Node<T>();
	Node<T> top = head;

	private int count = 0;

	public Stack() {
	}

	public void pushNode(Node<T> node) {
		node.connectToBefore(top);
		top.connectToNext(node);
		top = node;
		count++;
	}

	public void push(T data) {
		pushNode(new Node<T>(data));
	}

	public Node<T> popNode() {
		if (!isEmpty()) {
			Node<T> tmp = top;
			top = tmp.getBeforeNode();
			tmp.clearConnections();
			count--;
			return tmp;
		} else {
			return null;
		}
	}

	public T pop() {
		return popNode().getData();
	}

	public T getTop() {
		return top.getData();
	}

	public int count() {
		return count;
	}

	public Boolean isEmpty() {
		if (count() == 0) return true;
		return false;
	}

	public Stack<T> getInverse() {
		Stack<T> tmp = new Stack<T>();
		while (!isEmpty()) {
			tmp.push(pop());
		}
		return tmp;
	}

	public void print() {
		Node<T> cursor = head;
		System.out.println("============");
		while (true) {
			if (cursor.getNextNode() == null) break;
			cursor = cursor.getNextNode();
			System.out.print(cursor.getData().toString() + " ");
		}
		System.out.println("\n============");
	}

}


저작자 표시 비영리 변경 금지
신고

'[+++ JAVA +++] > - - Open Source' 카테고리의 다른 글

스택(Stack)  (0) 2012.11.14
(2012년 첫글은!?) [Blur] 블러 구현(java)2  (2) 2012.01.01
[Blur] 블러 구현(java)  (4) 2011.12.20
[자료구조] 자바로 만든 큐(Queue)  (1) 2011.10.30
Trackback 0 Comment 0


티스토리 툴바