데이터 구조 - 체인 스 택

2738 단어 사슬 창고
자바 구현 체인 스 택 데이터 구조
LinkNode (노드) - 봉인 - > LinkList (체인 테이블) - 봉인 - > LinkStack (체인 창고)
기본 데이터 단위 노드
LinkNode.java
/**
 *      ,  
 * 
 * @author mingwei
 * 
 */
public class LinkNode {
	/**
	 *             
	 */
	Object mData;
	/**
	 *               
	 */
	LinkNode mNext;

	/**
	 *        
	 * 
	 * @param data
	 *                   
	 */
	public LinkNode(Object data) {
		mData = data;
	}
}

링크 구조, 머리 에서 노드 삽입 및 삭제
/**
 *   ,      
 * 
 *                 ->addHeadNode
 * 
 *               ->removeHeadNode
 * 
 * @author mingwei
 * 
 */
public class LinkList {
	/**
	 *      
	 */
	String mName;
	/**
	 *    
	 */
	LinkNode mHeadNode;

	/**
	 *     ,       
	 * 
	 * @param name
	 */
	public LinkList(String name) {
		mName = name;
	}

	/**
	 *         
	 * 
	 *   :
	 * 
	 * 1.      
	 * 
	 * 2.                 next 
	 * 
	 * 3.                
	 * 
	 * @param data
	 *                     
	 */
	public void addHead(Object data) {
		LinkNode node = new LinkNode(data);
		node.mNext = mHeadNode;
		mHeadNode = node;
	}

	/**
	 *        
	 * 
	 *   :
	 * 
	 * 1.             
	 * 
	 * 2.               ,            ,        ,             ,
	 *                      
	 * 
	 * @return
	 */
	public Object removeHead() {
		if (mHeadNode == null) {
			throw new IndexOutOfBoundsException(mName + "'s headnode is null");
		}
		LinkNode temp = mHeadNode;
		mHeadNode = mHeadNode.mNext;
		return temp.mData;
	}

	/**
	 *        
	 * 
	 *   :               
	 */
	public void printLinkList() {
		if (mHeadNode == null) {
			System.out.println(mName + "=linklist is null");
			return;
		}
		LinkNode node = mHeadNode;
		System.out.print(mName + "=");
		while (node != null) {
			System.out.print(node.mData + "|");
			node = node.mNext;
		}
		System.out.print("
"); } }

체인 스 택 구조, push 스 택 과 pop 스 택 작업
/**
 *           
 * 
 * push   
 * 
 * pop   
 * 
 * @author mingwei
 * 
 */
public class LinkStack {
	/**
	 *          ,      
	 */
	LinkList mLinkList = new LinkList("  ");

	/**
	 *   
	 */
	public void push(Object node) {
		mLinkList.addHead(node);
	}

	/**
	 *   
	 * 
	 * @return       
	 */
	public Object pop() {
		return mLinkList.removeHead();
	}

	/**
	 *     
	 */
	public void printStack() {
		mLinkList.printLinkList();
	}

}

사용:
결과:
public class Test {
	public static void main(String[] args) {
		LinkStack stack = new LinkStack();
		stack.push("a");
		stack.push("b");
		stack.push("a");
		stack.printStack();
		stack.pop();
		stack.printStack();
	}
}

좋은 웹페이지 즐겨찾기