给定一个数字 m ,将一堆数字中的每一个按值(假定值为 n )进行运算分成 m 类,运算公式为 (2∗n+1)%m ,算出结果值为关键字。相同关键字的数字组成一个链表,所以共有 m 条链表,每条链表中的值占据一行,根据 m 条链表的元素个数从小到大顺序排列(个数相同时,关键字小的排在前面),先假定对于一个给定满足上述条件的数字已按规则排列完全后,在此基础上做一项操作,即把所有尾数是 x 的值 n 加上一个值 y ,调整链表组成,插入的元素要求放在链表的末尾,使得变化后的链表依然满足上述条件,具体满足如下两点:
(1) 同一个链表中的元素值关健字一样
(2) 链表间的排列顺序:按元素个数从小到大排列(个数相同时,关键字小的排在前面)
调整链表组成时,如果让放到原链表,则只更新值即可,而且不需要调整顺序(即:不需要移动到链表末尾)。只有调整到其他链表时才需要。
给定一个正整数 m和 m 条链表,每条链表由若干数字构成,并且同一条链表中任一数字 n 都满足计算公式 key=(2×n+1)modm 得到的关键字均相同。这 m 条链表初始时已按“链表长度从小到大排序(若长度相同则关键字小的排前)”排列。