void TestList() { List<int> l1; l1.PushBack(1); l1.PushBack(2); l1.PushBack(3); l1.PushBack(4); l1.PushBack(5); l1.PushBack(6); l1.PushBack(7); l1.PushBack(8); PrintList1(l1); // 迭代器失效 List<int>::Iterator it = l1.Begin(); while(it != l1.End()) { if ((*it) == 0) it = l1.Erase(it); else ++it; } PrintList2(l1); PrintList3(l1); }
void RadixSort(SList *L) /*对L进行基数排序,使得L成为按关键字非递减的静态链表,L.r[0]为头结点*/ { int i; addr f,r; for(i=0;i<(*L).keynum;i++) /*由低位到高位依次对各关键字进行分配和收集*/ { Distribute((*L).data,i,f,r); /*第i趟分配*/ Collect((*L).data,f,r); /*第i趟收集*/ printf("第%d趟收集后:",i+1); PrintList2(*L); } }
void main() { DataType d[N]={268,126,63,730,587,184}; SList L; InitList(&L,d,N); printf("待排序元素个数是%d个,关键字个数为%d个\n",L.length,L.keynum); printf("排序前的元素:\n"); PrintList2(L); printf("排序前的元素的存放位置:\n"); PrintList(L); RadixSort(&L); printf("排序后元素的存放位置:\n"); PrintList(L); system("pause"); }