zoukankan      html  css  js  c++  java
  • C语言链表实现冒泡法排序

    功能是:从键盘输入字符以空格隔开 当输入q或者Q时按回车表示输入结束

    先放出main函数

    int main(){
        
        MyNode *myNode = (MyNode *)malloc(sizeof(MyNode));
        if (NULL == myNode) {
            return 0;
        }
        
        getNum(myNode);
        sortList(myNode);
        printStr(myNode);
        freeStr(myNode);
      
        return 0;
    }

    然后就结构体

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct mynode{
        long value;
        struct mynode *next;
    }MyNode;

    最后是几个方法

    void getNum(MyNode *myNode){
        
        char s[20];
        
        printf("please input num and end with q/Q
    ");
        scanf("%s", s);
        
        while ((strcmp(s, "q") != 0) && (strcmp(s , "Q") != 0)) {
            
            MyNode *temp = (MyNode *)malloc(sizeof(MyNode));
            if (NULL == temp) {
                return;
            }
            temp->value = strtol(s , 0, 0);
            temp->next = NULL;
            
            myNode->next = temp;
            
            myNode = myNode->next;
            
            scanf("%s", s);
        }
        
    }
    
    void printStr(MyNode *node){
        if (node == NULL) {
            return;
        }
        
        MyNode *temp = node;
        
        while (temp->next != NULL) {
            printf("%ld ", temp->next->value);
            temp = temp->next;
        }}
    
    void sortList(MyNode *node){
        if (NULL == node) {
            return;
        }
        
        MyNode *startP = node->next;
        MyNode *nextP = node->next;
        
        while (startP->next != NULL) {
            nextP = startP->next;
            
            while (nextP->next != NULL) {
                if (startP->next->value > nextP->next->value) {
                    long temp = startP->next->value;
                    startP->next->value = nextP->next->value;
                    nextP->next->value = temp;
                }
                nextP = nextP->next;
            }
            
            startP = startP->next;
        }
    }
    
    void freeStr(MyNode *node){
        if (NULL == node) {
            return;
        }
        
        MyNode *old = NULL;
        
        while (node != NULL) {
            printf("d
    ");
            old = node;
            node = node->next;
            free(old);
        }
        
    }


  • 相关阅读:
    Git
    vue
    vue
    echarts,dojo和兼容问题
    js数组对象以某一对象排序
    滚动条与图片移动
    vue
    vue
    vue页面组件化-父子组件传值
    phpquery笔记
  • 原文地址:https://www.cnblogs.com/tqj-zyy/p/4559761.html
Copyright © 2011-2022 走看看