void bijiao(sstable ss,suoyinbiao &s) { suoyinbiao p = s; int i; int j = 1; int a = ss.r[1].key; if (j-1<=ss.length/5) { for (i = (j - 1) * 5 + 1;i <= j * 5;i++) { if (ss.r[i].key>a) { a = ss.r[i].key; p->keyzhi = a; p->weizhi = (j - 1) * 5 + 1; } } j++; p = p->next; } } int chazhao(sstable ss, suoyinbiao &s, int k) { int n = 1; suoyinbiao p = s; while (p!=NULL) { if (k<=p->keyzhi) { for (int i = n * 5;i >= n * 5 - 4;--i) { if (ss.r[i].key == k) { return i; } } } p = p->next; if (p == NULL) n++; } }
函数第一个参数是一个顺序表,第二个参数是一个单链表,函数意思是5个5个比较顺序表中的元素,将最大的元素存入单链表中,每个结点中的weizhi存的是每五个元素的第一个元素的位置。但是当我输入7个元素,将头5个元素存入第一个结点后,第二个结点本应该存剩下两个元素中最大的和6这个位置,但是当我调用第二个函数的时候却显示第二个结点为空,请大神解惑。。。
冷凌川