Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1277943
  • 博文数量: 213
  • 博客积分: 7590
  • 博客等级: 少将
  • 技术积分: 2185
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-31 17:31
个人简介

热爱开源,热爱linux

文章分类

全部博文(213)

文章存档

2018年(4)

2017年(1)

2015年(1)

2014年(5)

2013年(2)

2012年(2)

2011年(21)

2010年(82)

2009年(72)

2008年(23)

分类: LINUX

2008-11-12 21:00:36

 学完C语言有好长时间了,我觉得应该把C中一些常用的函数总结一下,这即是对知识的恐固,也能在其中发现自己的不足,以下代码实现排序功能:

void sort_data_by_name(Student *head)

    Stu p1,p2.p3,p4;
    if(head->next==NULL)
    printf("There is no data!");
    p1=head->next->next;
    head->next->next=NULL;
    while(p1!==NULL)
      {  p2=p1;
         p1=p1->next;
         p3=head;
         while(p3->next!=NULL)
           { p4=p3->next;
             if(strcmp(p2->room,p4->room)>0) p3=p4;
             else break;
             }
          if(P3->next==NULL)
            { p2->next=p3->next;
              p3->next=p2;
            }
            else
            { p2->next=p4;
              p3->next=p2;           
            }
      }
   printf("Sort by name!");
   display_data(head);

}


选择排序  
   
  struct   node   *ls_sort(struct   node*h)  
  {  
      struct   node   *q,*t,*tail,*u,*v,*s;  
      s=NULL;//置有序表头为空  
      while(h!=NULL)  
  {  
    for(t=u=h;u->link!=NULL;u=u->link)  
      {    
          v=u;//保留关键字更小的结点的前驱结点的指针  
          t=u->link;//找到一个关键字更小的结点  
        }  
 if(t==h)h=h->link;//关键字更小的结点是链表的首结点  
    else   v->link=t->link;//关键字最小的结点脱钩  
    if(s==NULL)tail=s=t;//第一次找到关键字最小的结点  
    else=tail=tail->link=t;  
      }  
  if(s!=NULL)tail->link=NULL;//让有序链表在此结束  
  return   s;//返回有序链表的首结点  
  }  
   
  struct   node   {//结构链表定义  
    type   data;  
    struct   node   *link;  
  }

阅读(1442) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~