在原本我的单链表的基础上增加了一个合并的函数 ,不清楚的可以看这个链接 C++版 单向链表的实现 //链表相加 int CSList::Add(CSList* _slistA,CSList* _slistB) { size_t i=0; void* data = NULL; size_t nlength = _slistA->Length(); //第一个加进去 while(i<nlength) { _slistA->GetByIndex(i,&data); Append(data); i++; } //第二个加进去 i=0;nlength = _slistB->Length(); while(i<nlength) { _slistB->GetByIndex(i,&data); Append(data); i++; } return 0; } 这个排序是个外部函数,算法很傻很简单 int Sort(CSList* _sl) { int Count = _sl->Length(),i=0,j=0; int* temp = new int[Count]; void* data; //提取数据 for (i=0;i<Count;i++) { _sl->GetByIndex(i,&data); temp[i] = *(int*)data; } //交换数据(冒泡) for (i=0;i<Count;i++) { for (j=i+1;j<Count;j++) { if (temp[i]>temp[j]) { temp[i] = temp[i]^temp[j]; temp[j] = temp[i]^temp[j]; temp[i] = temp[i]^temp[j]; } } } //设置数据 for (i=0;i<Count;i++) { _sl->SetByIndex(i,&temp[i]); } return 0; }