C语言 链表排序

Posted 菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 链表排序相关的知识,希望对你有一定的参考价值。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <assert.h>
 4 
 5 typedef struct node{
 6     int data;      // 存放数据
 7     struct node* next; // 下一节点
 8 }ListNode;
 9 
10 extern int CSort();
11 
12 ListNode *root = NULL;//
13 
14 int main(int argc, char* argv[]){
15     int a[] = { 2, 4, 3, 59, 45, 32, 22};// 排列数据内容
16     ListNode *node = NULL;
17     ListNode *tmp = NULL;
18     int i = 0 ;
19 
20     root = (ListNode *)malloc(sizeof(ListNode)); 
21 
22     node = root;
23     for(i=0; i< sizeof a / sizeof(int);  ++i){
24         printf("a in %d\n", a[i]);
25         tmp = (ListNode *)malloc(sizeof(ListNode)); 
26         tmp->data = a[i];
27         node->next = tmp;
28         node = tmp;
29     }
30     tmp->next = NULL; // 
31 
32 
33     CSort();
34 
35     node = root->next;
36     while(node){
37         printf("node->data  %d\n", node->data);
38         node = node->next;// 
39     }
40 
41     return 0; // 
42 }
43 
44 int CSort(){
45     ListNode *p = root->next;
46     ListNode *p_pre = p->next;
47     int change_value = 0;
48     
49     assert(root); // 
50 
51     while(p){
52         p_pre = p->next;
53         while(p_pre){
54             if(p->data <= p_pre->data){
55                 ;
56             }else{
57                 change_value = p->data;
58                 p->data = p_pre->data;
59                 p_pre->data = change_value;
60             }
61             p_pre = p_pre->next;
62         }
63         p = p->next;
64     }
65 }

  链表排序

        要求,将a数组内数据按照从小到大顺序排序,由 CSort() 函数实现;

以上是关于C语言 链表排序的主要内容,如果未能解决你的问题,请参考以下文章

双向链表排序c语言程序设计

双向链表排序c语言程序设计

C语言的链表怎么排序

C语言反转单向链表的代码

链表选择排序的C语言算法实现

c语言链表排序