编程实现单链表的排序,这里我们使用的是冒泡排序
template<class T>
struct ListNode
{
T _value;
ListNode<T>* _next;
ListNode(const T& value)
:_value(value),_next(NULL)
{}
};
template<class T>
class List
{
public:
List()
:_head(NULL)
{}
bool PushBack();
void sort()//单链表的冒泡排序
{
if(_head==NULL||_head->_next ==NULL)
{
return;
}
int len = Length();
for(int i=0;i<len;++i)
{
ListNode<T>* p = _head;
ListNode<T>* q = _head->_next;
for(int j=1;j<len-i;++j)
{
if(p->_value > q->_value)
{
int tmp = p->_value;
p->_value = q->_value;
q->_value = tmp;
}
p = q;
q = q->_next;
}
}
}
private:
ListNode<T>* _head;
};