单链表的sort
排序采用冒泡法,不是单纯的改变链表结点的值,而是通过改变物理结构上的指针域指向实现。
void sort(List *list)
{
if(list->size <=1)`
return ;
Node *p,*q,*pa,*temp;
for(int i=0;i<list->size-1;i++)
{
q=list->first->next;
p=q->next;
pa=list->first;
for(int l=0;l<list->size-1-i;l++)
{
if(q->data>p->data)
{
if(list->last==p)
list->last=q;
q->next=p->next;
p->next=q;
pa->next=p; 现在的关系为pa>p>q
temp=q;
q=p;
p=temp;
}
p=p->next;
q=q->next;
pa=pa->next;
}
}
}
单链表的resver
void resver(List *list)
{
if(list->size<=1)
return ;
Node *q=list->first->next;
Node *p=q->next;
q->next=NULL;
list->last=q;
while(p!=NULL)
{
list->first->next=p->next;
p->next=q;
q=p;
p=list->first->next;
}
list->first->next=q;
}