1. 程式人生 > >單鏈表元素按插入方法排序實現

單鏈表元素按插入方法排序實現

typedef struct node
{ 
    int data;  //資料域
    struct node *next;  //指標域 next
}linklist,*link;  
void Insertsort(link L)  //插入排序函式
{
  link p,q,ru;     
  p=L->next;    //p指標指向L的第一個節點
  L->next=NULL;  // 置空連結串列,然後將原連結串列中的節點逐個插入有序表中
  while(p!=NULL)  //p工作指標直到原連結串列末尾
  {
    r=L;    
    q=L->next;  //q指向原連結串列的節點
    while(q!=NULL&&q->data<=p->data)  //q工作指標直到連結串列末尾,並且q的資料要<=p的資料
    {
       r=q;      //r指標指向q
       q=q->next;  //q工作指標繼續往後移動
    }

  u=p->next;    //u指標指向待插入的節點
  p->next=r->next;  //然後將p連線到有序表中
  r->next=p;   //連線p到有序表中
  p=u;  //p工作指標指向u
}

}