| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1182 人关注过本帖
标题:经典算法--单链表选择排序
只看楼主 加入收藏
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
 问题点数:0 回复次数:3 
经典算法--单链表选择排序

第一种: #include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node *next; }*Linklist,Node; Linklist creat(int n) {Linklist head,r,p; int x,i; head=(Node*)malloc(sizeof(Node)); r=head; printf("输入数字:\n"); for(i=n;i>0;i--) {scanf("%d",&x); p=(Node*)malloc(sizeof(Node)); p->data=x; r->next=p; r=p;} r->next=NULL; return head; } Linklist selectsort(Node *g) { Node *p,*q,*t,*s,*h; h=(Node *)malloc(sizeof(Node)); h->next=g; p=h; while(p->next->next!=NULL) { for(s=p,q=p->next;q->next!=NULL;q=q->next) if(q->next->data<s->next->data) s=q; if(s!=q) { t=s->next; s->next=t->next; t->next=p->next; p->next=t; } p=p->next; } g=h->next; free(h); return g; } void output(Linklist head) {Linklist p; p=head->next; do{ printf("%3d",p->data);p=p->next; }while(p); printf("\n"); } void main() {Linklist head; int x,j,n; printf("输入数字的个数(n):\n"); scanf("%d",&n); head=creat(n); printf("输出数字:\n"); output(head); head=selectsort(head); printf("已经排序的数字:\n"); output(head); } 第二种方法 #include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node *next; }*Linklist,Node; Linklist creat(int n) {Linklist head,r,p; int x,i; head=(Node*)malloc(sizeof(Node)); r=head; printf("输入数字:\n"); for(i=n;i>0;i--) {scanf("%d",&x); p=(Node*)malloc(sizeof(Node)); p->data=x; r->next=p; r=p;} r->next=NULL; return head; } void output(Linklist head) {Linklist p; p=head->next; do{ printf("%3d",p->data);p=p->next; }while(p); printf("\n"); } void paixu(Linklist head) {Linklist p,q,small;int temp;

for(p=head->next;p->next!=NULL;p=p->next) {small=p; for(q=p->next;q;q=q->next) if(q->data<small->data) small=q; if(small!=p) {temp=p->data; p->data=small->data; small->data=temp;} } printf("输出排序后的数字:\n"); output(head); } void main() {Linklist head; int x,j,n; printf("输入数字的个数(n):\n"); scanf("%d",&n); head=creat(n); printf("输出数字:\n"); output(head); printf("已排序的数字:\n"); paixu(head); }

搜索更多相关主题的帖子: 单链 算法 经典 选择 
2005-04-05 23:16
凡星
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2006-6-14
收藏
得分:0 
谢谢啦 解了我的燃眉之急啊  大哥

只要不是平淡/如果远方呼喊我/我就走向远方
2006-10-11 09:16
无赖
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-8-17
收藏
得分:0 
怎得一个谢字了的!!!!恩同在造
2006-10-12 14:42
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
大哥厉害是厉害,见识过你的二叉树非递归周游,就是你写得太平了放在里面不好吗?

Viva,espana!
2006-10-17 17:42
快速回复:经典算法--单链表选择排序
数据加载中...
 
   



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

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