使用的是交换数据
方法一:表内排序
void SortByLink() { int n = m_list.GetCount(); //获取节点数 POSITION *ps = new POSITION[n+1]; //创建n+1个POSITOIN类型的数组 int i = 0; //表示第i个 POSITION p = m_list.GetHeaderPosition(); //获取头结点地址 while(p) { ps[i] = p; //将p地址赋值给ps[i]数组 m_list.GetNext(p); //获取下一个结点地址 i++; } Sort(ps,n); }
void Sort(POSITION *ps,int n) { int i = 0; int j,k; while(i < n) { j = i+1; k = i; while(j < n) { if(m_list.GetAt(ps[j]).** < m_list.GetAt(k).** ) //比较大小 k = j; j++; } if(i != k) //将数据进行交换 { m_list.SetAt(p,struct DATA); //DATA是结构体 } i++; } }
文章来源: c++排序(CList类库)