北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
123
返回列表 发新帖
楼主: zgbl

share个小发现

[复制链接]
 楼主| 发表于 2009-2-8 22:22:09 | 显示全部楼层
bosscome 1


MinHeap::MinHeap(const int n)
{
        CurrentSize = 0;
        MaxSize = n;
        heapArray = new junction[MaxSize];
}
bool MinHeap::empty()
{
        if (CurrentSize == 0)
                return true;
        else
                return false;
}
void MinHeap::swap(int x, int y)
{
        junction temp = heapArray[x];
        heapArray[x] = heapArray[y];
        heapArray[y] = temp;
}
int MinHeap::parent(int pos) const
{
        return (pos-1)/2;
}
bool MinHeap::Insert(const junction& newNode)
{
        if (CurrentSize == MaxSize)
                return false;
        heapArray[CurrentSize] = newNode;
        SiftUp(CurrentSize);
        CurrentSize ++;
        return true;
}
void MinHeap::SiftUp(int position)
{
        int temppos = position;
        junction temp = heapArray[temppos];
        while((temppos > 0) && (heapArray[parent(temppos)].length > temp.length))
        {
                heapArray[temppos] = heapArray[parent(temppos)];
                temppos = parent(temppos);
        }
        heapArray[temppos] = temp;
}
junction& MinHeap::RemoveMin()
{
        if (CurrentSize == 0)
        {
                cout<<"can't delete";
                exit(1);
        }
        else
        {
                swap(0, --CurrentSize);
                if(CurrentSize > 1)
                        SiftDown(0);
                return heapArray[CurrentSize];
        }
}
void MinHeap::SiftDown(int left)
{
        int i = left;
        int j = 2 * left + 1;
        junction temp = heapArray;

        while (j < CurrentSize)
        {
                if ((j < CurrentSize-1) && (heapArray[j].length > heapArray[j+1].length))
                        j++;
                if (temp.length > heapArray[j].length)
                {
                        heapArray = heapArray[j];
                        i = j;
                        j = 2 * i + 1;
                }
                else
                        break;
        }
        heapArray = temp;
}



汗。。。半懂不懂的,学了c语言和数据结构入门,这刚好在我的理解能力的外面一点点,靠了

[ 本帖最后由 zgbl 于 2009-2-8 10:23 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-2-8 22:45:48 | 显示全部楼层
ask tie ren about 猪头
你向铁人打听有关『猪头』的消息。
铁人偷偷的指了指你的脑袋。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-27 08:22 PM , Processed in 0.008877 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表