linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 软件开发 >
栏目导栏
资料搜索
热门文章
·Linux 下 C 语言编程
·Linux下的通用线程池创建
·C++字符串转换篇
·linux C 进程操作篇
·linux上的C/C++编译器gcc/egcs
·linux C 文件权限控制篇
·GCC使用手册
·linux C 接口处理篇
·在Redhat Linux上安装 GCC 编译
·GCC使用指南
·C语言运算符
·Linux下C开发环境的构成和安装
·fopen()函数的参数说明
·GCC使用手册与常用命令
·Scheme 语言介绍
最新文章
·在Ubuntu Linux 8.04上构建GCC
·Linux操作系统下Socket编程地址
·将VC程序移植到Linux系统的几点
·Linux下malloc/free与new/dele
·Linux下用GTK和socket实现简单
·Linux操作系统下让Tomcat启动在
·Linux操作系统中如何编译C程序
·几种常被人们忽略的Linux系统下
·Eclipse编程工具 在Ubuntu下的
·Linux操作系统下的网络地址转换
·老手经验谈:Linux驱动程序开发
·Linux操作系统多线程同步Mutex
·Linux操作系统下C程序语言简易
·Linux系统平台下关于GCC编译及
·解决Linux系统下管道被接受方关
Google
 
C语言链表的创建与排序
[ 作者:  加入时间:2007-05-23 07:19:53  来自:Linux联盟收集整理 ]
include<stdio.h> DBCLinux联盟
#include<stdlib.h> DBCLinux联盟
typedef struct STRUCT { DBCLinux联盟
int value; DBCLinux联盟
struct STRUCT *next; DBCLinux联盟
}TS; DBCLinux联盟
main() DBCLinux联盟
{ DBCLinux联盟
#define N 9 DBCLinux联盟
int a[N],i; DBCLinux联盟
TS *head,*p; DBCLinux联盟
TS *CreateLink(int *,int); DBCLinux联盟
void sort(TS **); DBCLinux联盟
randomize(); DBCLinux联盟
for(i=0;iDBCLinux联盟
a=random(9); DBCLinux联盟
head=CreateLink(a,N); DBCLinux联盟
for(p=head;p;p=p->next) DBCLinux联盟
printf("%-2d",p->value); DBCLinux联盟
putchar('\n'); DBCLinux联盟
sort(&head); DBCLinux联盟
for(p=head;p;p=p->next) DBCLinux联盟
printf("%-2d",p->value); DBCLinux联盟
getchar(); DBCLinux联盟
} DBCLinux联盟
void sort(TS **h) /* 选择排序算法 */ DBCLinux联盟
{ DBCLinux联盟
TS *h1,*p,*q,*r,*s; DBCLinux联盟
h1=p=(TS *)malloc(sizeof(TS)); DBCLinux联盟
p->next=*h; DBCLinux联盟
while(p->next) { DBCLinux联盟
q=p->next; DBCLinux联盟
r=p; DBCLinux联盟
while(q->next) { DBCLinux联盟
if(q->next->valuenext->value) DBCLinux联盟
r=q; DBCLinux联盟
q=q->next; DBCLinux联盟
} DBCLinux联盟
if(r!=p) { DBCLinux联盟
s=r->next; DBCLinux联盟
r->next=s->next; DBCLinux联盟
s->next=p->next; DBCLinux联盟
p->next=s; DBCLinux联盟
} DBCLinux联盟
p=p->next; DBCLinux联盟
} DBCLinux联盟
*h=h1->next; DBCLinux联盟
free(h1); DBCLinux联盟
} DBCLinux联盟
TS *CreateLink(int *a,int n) DBCLinux联盟
{ DBCLinux联盟
int i; DBCLinux联盟
TS *h,*p; DBCLinux联盟
h=NULL; DBCLinux联盟
for(i=n;i>0;i--) { DBCLinux联盟
p=(TS *)malloc(sizeof(TS)); DBCLinux联盟
p->value=a[i-1]; DBCLinux联盟
p->next=h; DBCLinux联盟
h=p; DBCLinux联盟
} DBCLinux联盟
return h; DBCLinux联盟
}   Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·在 C/C++中如何构造通用的对象链表  (2006-12-26 11:33:40)
 ·深入分析 Linux操作系统的内核链表  (2006-10-16 10:56:26)
 ·链表的建立、插入和删除  (2006-09-24 15:52:39)
 ·链表的c语言实现(十)  (2006-07-08 01:04:35)
 ·链表的c语言实现(九)  (2006-07-08 01:02:52)
 ·链表的c语言实现(八)  (2006-07-08 01:01:58)
 ·链表的c语言实现(七)  (2006-07-08 00:59:41)
 ·链表的c语言实现(六)  (2006-07-08 00:58:12)
 ·链表的c语言实现(五)  (2006-07-08 00:56:36)
 ·链表的c语言实现(四)  (2006-07-08 00:48:55)