C实现单链表直接选择排序
2012-07-19 09:27
113 查看
/**************************** 单链表直接选择排序 *******************************/ #include<stdio.h> #include<stdlib.h> struct node { int num; struct node *next; }; struct node *head=NULL; cre_list() //初始化结点 { head = (struct node *)malloc(sizeof(struct node)); head->num=0; head->next = NULL; } add_node(int num) //插入结点 { struct node *ptr = (struct node *)malloc(sizeof(struct node)); ptr->num = num; ptr->next = head->next; head->next=ptr; } display_node() //遍历链表 { struct node *p = head->next; do { printf("%d\t",p->num); p = p->next; }while(p != NULL); printf("\n"); } select_insert() { int min=0; int tmp=0; struct node *p,*q,*M; p=q=M=head; while(p->next!=NULL) { M=q=p->next; min=q->num; while(q!=NULL) { if(q->num < min) { M=q; min=q->num; } q=q->next; } if(p->next!=M) { tmp=p->next->num; p->next->num=M->num; M->num=tmp; } p=p->next; } } int main() { int i; int a[10]={23,41,77,12,98,25,6,97,55,38}; cre_list(); for(i=0;i<10;i++) { add_node(a[i]); } display_node(); select_insert(); display_node(); return 0; }
相关文章推荐
- 选择排序的链表实现
- 直接选择排序及交换二个数据的实现
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 79 1.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- java实现直接出入、希尔、直接选择、快速排序
- 用链表实现直接选择排序和直接插入排序
- C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)
- java中各种常用排序实现(直接插入排序、直接选择排序、堆排序、冒泡排序、快速排序和归并排序)
- 排序算法之四 —— 直接选择排序及交换二个数据的正确实现
- 经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 直接选择类排序算法思想和实现过程
- 单链表冒泡、选择排序的c语言实现
- Python实现各类数据结构和算法---直接选择排序
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
- 冒泡排序、选择排序、直接插入排序(java实现)
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现