zoukankan      html  css  js  c++  java
  • 选择法实现链表排序

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 /*
     4 选择法实现链表排序
     5 */
     6 typedef struct node
     7 {
     8     int data;
     9     struct node * next;
    10 }NODE;
    11 NODE * createList()
    12 {
    13     NODE *head = (NODE *)malloc(sizeof(NODE));
    14     head->next = NULL;
    15 
    16     return head;
    17 }
    18 void insertNode(NODE *head,int nodeData)
    19 {
    20     NODE *sur = (NODE *)malloc(sizeof(NODE));
    21     sur->data = nodeData;
    22 
    23     sur->next = head->next;
    24     head->next = sur;
    25 
    26     return ;
    27 }
    28 void traverList(NODE *head)
    29 {
    30     head = head->next;
    31     while(head)
    32     {
    33         printf("%d
    ",head->data);
    34         head = head->next;
    35     }
    36 }
    37 int lenList(NODE *head)
    38 {
    39     int len = 0;
    40     head = head->next;
    41     while(head)
    42     {
    43         len++;
    44         head = head->next;
    45     }
    46     return len;
    47 }
    48 void choiceSort(NODE *head,int len)
    49 {
    50     int i,j,temp;
    51     NODE * p,*q,*t;
    52     p = head->next;
    53     for(i = 0;i<len-1;i++)
    54     {
    55         q = p->next;
    56         t = p;
    57         for(j = i+1;j<len;j++)
    58         {
    59             if(t->data > q->data)
    60             {
    61                 t = q; //比而不换,只记地址。
    62             }
    63             q = q->next;//第二个元素和头上元素比较完后往前走一走
    64 
    65         }
    66         if(t != p)
    67         {
    68             
    69             temp = t->data;
    70             t->data = p->data;
    71             p->data = temp;
    72         }
    73         p = p->next;//一趟完事后,头上的元素往前走一走
    74     }
    75     return ;
    76 }
    77 int main(void)
    78 {
    79     NODE * head = createList();
    80     for(int i = 0;i<50;i++)
    81         insertNode(head,rand()%100);
    82     traverList(head);
    83     printf("选择法排序后
    ");
    84     int len = lenList(head);
    85     choiceSort(head,len);
    86     traverList(head);
    87     return 0;
    88 }
  • 相关阅读:
    Python 序列化处理
    httpclient
    java获取配置文件中变量值
    利用数据库管理工具(Navicat)导出数据到Excel表中
    如何确保发布的项目是最新的
    上传文件,重命名
    Mybatis plus中一个框多条件查询 SQL拼接
    用eclipse发布springboot项目
    使用SQL命令行更改数据库字段类型
    Java中查询某个日期下所有时间段的数据
  • 原文地址:https://www.cnblogs.com/wangchaomahan/p/9727148.html
Copyright © 2011-2022 走看看