主题:跳跃链表的问题
这是跳跃链表的实现函数中的两个函数,但我看不明白这两个函数为什么这样写,还望大师们指点指点,谢谢.
void skiplist<T>::choospowers()
{
powers[maxlevel-1]=(2<<(maxlevel-1))-1;
for(int i=maxlevel-2,j=0;i>==0;i--,j++)
powers[i]=powers[i+1]-(2<<j);
}
int skiplist<T>::chooselevel()
{
int i,r=rand()%powers[maxlevel-1]+1;
for(i=1;i<maxlevel;i++)
if(r<powers[i])
return i-1;
}
void skiplist<T>::choospowers()
{
powers[maxlevel-1]=(2<<(maxlevel-1))-1;
for(int i=maxlevel-2,j=0;i>==0;i--,j++)
powers[i]=powers[i+1]-(2<<j);
}
int skiplist<T>::chooselevel()
{
int i,r=rand()%powers[maxlevel-1]+1;
for(i=1;i<maxlevel;i++)
if(r<powers[i])
return i-1;
}