//整理哈希表,求得哈希冲突链表中的倒数第200个数,以及哈希链的长度,当个数不足200时,取头结点的值;保存在输出数组中
void SortByCount::CaculateValueAndLength()
{
DWORD dwTempValue=0;
DWORD dwTempLength=0;
for(int i=0; i < HASH_SIZE; i++)
{
DWORD dwCnt = POSITION-1;
HashList HashHead = m_HashBucket[i];
DataNode *p = HashHead->Tail;
if(HashHead->size == 0)
{
continue;
}
if( (HashHead->size) >=POSITION)
{
//找到第200个节点
while(dwCnt != 0)
{
p=p->prev;
dwCnt--;
}
dwTempValue= p->dwValue;
dwTempLength = HashHead->size;
}
if( (HashHead->size) < POSITION)
{
dwTempValue = HashHead->Head->dwValue;
dwTempLength = HashHead->size;
}
InsertToOutPutList(dwTempValue, dwTempLength);
}
}