| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1118 人关注过本帖
标题:链表排序
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

/* link.h
#define NULL 0
#include<malloc.h>
#include <stdio.h>
typedef int datatype;
typedef struct link_node{
datatype info;
struct link_node *next;
}node;
typedef node* nodelink;

nodelink buildlink() /* 尾插法*/
{

datatype x;
nodelink head,s;
nodelink p2;
head=NULL;
p2=NULL;
printf("please input the link:");
scanf("%d",&x);
while(x!=0)
{s=(nodelink)malloc(sizeof(node));
s->info=x;
if (head==NULL) head=s; else p2->next=s;
p2=s;
scanf("%d",&x);
}
if(p2) p2->next=NULL;
return(head);
}

nodelink creatlink() /***头插法***/
{ nodelink head,p;
datatype x;
head=NULL;
printf("please input the link:");
scanf("%d",&x);
while(x!=0)
{ p=(nodelink)malloc(sizeof(node)) ;
p->info=x;
p->next=head;
head=p;
scanf("%d",&x);
}
return head;
}

void print_link_list(nodelink head)
{ nodelink p;
p=head;
while(p)
{ printf("%5d-->",p->info);
p=p->next;
}
printf("\n");
}
*/


#include"link.h"
/*单链表头文件*/
/*从链表中拆出节点,插入到一新链表中*/

nodelink paixu(nodelink*head1)
{
nodelink p,pre,s,q,head ;
p=*head1;
pre=NULL;
head=NULL;
s=head;
q=NULL;
while(p!=NULL)
{
pre=p->next ;
/*保留P的原值,以便下一次访问*/
p->next=NULL ;
if(head==NULL)head=p ;
else
{
s=head ;
q=NULL ;
/*没找到,下移*/
while((s!=NULL)&&(p->info<=s->info))
{
q=s ;
s=s->next ;
}
if(q==NULL)
{
p->next=head ;
head=p ;
}
else
{
p->next=s ;
q->next=p ;
}
}
p=pre ;
}
return(head);
}

main()
{
nodelink head1,head ;
head1=buildlink();
printf("input the start link:");
print_link_list(head1);
/*打印链表*/
head=paixu(&head1);
/*核心函数,将单链表排序*/
printf("input the end link:");
print_link_list(head);
/*打印链表*/
getch();
}


倚天照海花无数,流水高山心自知。
2006-10-17 23:44
快速回复:链表排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079290 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved