学完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;
}
阅读(1489) | 评论(0) | 转发(0) |