首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

行列及优先级队列

2012-08-28 
队列及优先级队列队列,与栈相反,先进先出:/** * 优先级队列与队列唯一的区别是优先级队列内部数据项有序 *

队列及优先级队列
    队列,与栈相反,先进先出:

/** * 优先级队列与队列唯一的区别是优先级队列内部数据项有序 *  * @Desc This class use to create PriorityQ class * @author xujp1  * @version Revision: 1.00 Date: Feb 20, 2012 */class PriorityQ{    private final long[] priorityQ;    private final int    maxSize;    private int          nItem;    public PriorityQ(int s)    {        maxSize = s;        priorityQ = new long[maxSize];        nItem = 0;    }    //remove和insert方法实现在插入后队列即有序    public long remove()    {        return priorityQ[--nItem];    }    public void insert(long s)    {        int j;        if(nItem == 0)        {            priorityQ[nItem] = s;        }        else        {            for(j = nItem - 1; j >= 0; j--)            {                if(priorityQ[j] < s)                {                    priorityQ[j + 1] = priorityQ[j];                }                else                    break;            }            priorityQ[j + 1] = s;        }        nItem++;    }    //下面的remove2和insert2主要以remove2实现优先级队列    public long remove2()    {        int min = 0;        long minData;        for(int i = 1; i < nItem; i++)        {            min = priorityQ[min] < priorityQ[i] ? min : i;        }        minData = priorityQ[min];        for(int j = min; j < nItem - 1; j++)        {            priorityQ[j] = priorityQ[j + 1];        }        nItem--;        return minData;    }    public void insert2(long s)    {        priorityQ[nItem++] = s;    }    public boolean isEmpty()    {        return (nItem == 0);    }}


注:以上代码均出自《Java数据结构和算法中文第二版》

热点排行