zoukankan      html  css  js  c++  java
  • 双端链表 冒泡排序

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 
     5 typedef char * ElemType;
     6 
     7 typedef struct DuLNode {
     8     ElemType data;
     9     struct DuLNode *prior, *next;
    10 } DuLNode, *DuLinkList;
    11 
    12 
    13 DuLinkList create(){
    14     return (DuLinkList)malloc(sizeof(DuLNode));
    15 }
    16 
    17 char * create_str(int size){
    18     return (char *)malloc((size + 1) * sizeof(char));
    19 }
    20 
    21 void scan(DuLinkList &L){
    22     int n;
    23     char str[100];
    24     DuLinkList lp, p;
    25     scanf("%d", &n);
    26     scanf("%s", str);
    27     p = create();
    28     p->data = create_str(strlen(str));
    29     strcpy(p->data, str);
    30     p->prior = NULL;
    31     p->next = NULL;
    32     L = p;
    33     while(--n){
    34         scanf("%s", str);
    35 
    36 37         lp = create();
    38         lp->data = create_str(strlen(str));
    39         strcpy(lp->data, str);
    40         lp->prior = p;
    41         lp->next = NULL;
    42 
    43         p->next = lp;
    44 
    45         p = lp;
    46     }
    47 }
    48 void insertion_sort(DuLinkList &L){
    49     
    50     DuLinkList sign = NULL, p1, p2;
    51     for(DuLinkList cnt = L; cnt->next != NULL; cnt = cnt->next){
    52         for(p1 = L, p2 = L->next; p2 != sign; p1 = p1->next, p2 = p2->next){
    53             if(strcmp(p1->data, p2->data) >= 0){
    54                 char *tmp = p1->data;
    55                 p1->data = p2->data;
    56                 p2->data = tmp;
    57             }
    58         }
    59         sign = p1;
    60     }
    61 }
    62 
    63 void print(DuLinkList L){
    64     while(L != NULL){
    65         printf("%s ", L->data);
    66         L = L->next;
    67     }
    68     puts("");
    69 }
    70 
    71 int main(){
    72     //freopen("data.txt", "r", stdin);
    73     DuLinkList L;
    74     //输入数据
    75     scan(L);
    76     //打印输出
    77     print(L);
    78     //冒泡排序
    79     insertion_sort(L);
    80     //打印数据
    81     print(L);
    82 
    83     return 0;
    84 }

    测试数据

    10
    9只小昆虫
    8只小昆虫
    7只小昆虫
    6只小昆虫
    5只小昆虫
    4只小昆虫
    3只小昆虫
    2只小昆虫
    1只小昆虫
    0只小昆虫

  • 相关阅读:
    PHP框架 CI与TP之MVC比较
    多线程设计要点
    BigPipe 的工作原理
    Linux yum命令的使用技巧
    java 乱码问题
    win7或xp下常用命令
    不同场景下JVM参数的设置
    win7笔记本创建wifi热点
    maven编译出现Java heap space
    Curling 2.0——蛋疼的一道题
  • 原文地址:https://www.cnblogs.com/xuqiulin/p/6175745.html
Copyright © 2011-2022 走看看