cqueue.java

来自「基于中科院的ICTCLAS实现中文分词系统 开发工具是JAVA.经测试,效果很好」· Java 代码 · 共 89 行

JAVA
89
字号
package com.gftech.ictclas4j.segment;

import java.util.ArrayList;

public class CQueue {
	// The chain sort according the weight of shortest path
	private ArrayList<TagQueueElem> m_pHead;

	// The node last accessed
	private int m_pLastAccess;

	public CQueue() {
		m_pLastAccess=-1;
	}

	public boolean IsSingle() {
		return (m_pHead != null && m_pHead.size() == 1);

	}
	public boolean IsEmpty(){
		return IsEmpty(false);
	}
	public boolean IsEmpty(boolean bBrowsed) {
		if (bBrowsed)
			return m_pLastAccess >= 0;
		else
			return m_pHead != null && m_pHead.size() > 0;
	}

	/**
	 * 
	 * @param nValue
	 *            The value for parent node
	 * @param nIndex
	 *            number of index in the parent node
	 * @param eWeight
	 *            the weight of last path
	 * @return
	 */
	public boolean Push(int nValue, int nIndex, double eWeight) {
		TagQueueElem tqe = new TagQueueElem();
		tqe.eWeight = eWeight;
		tqe.nIndex = nIndex;
		tqe.nParent = nValue;

		for (int i = 0; i < m_pHead.size(); i++) {
			TagQueueElem elem = m_pHead.get(i);
			if (elem.eWeight >= eWeight) {
				m_pHead.add(i, tqe);
				return true;
			}
		}

		return false;
	}
	
	public boolean Push(int nValue, int nIndex){
		return Push(nValue,nIndex,0);
	}

	public TagQueueElem Pop(boolean bModify, boolean bFirstGet) {
		int index = 0;
		TagQueueElem elem = null;

		if (!bModify)
			if (bFirstGet)
				index = m_pLastAccess;

		for (int i = 0; i < m_pHead.size(); i++) {
			if (i == index) {
				elem = m_pHead.get(i);
				if (bModify)
					m_pHead.remove(i);
				else
					m_pLastAccess = i + 1;

				break;
			}
		}

		return elem;
	}
	
	public TagQueueElem Pop(){
		return Pop(true,true);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?